Java中輸入/輸出的類存放在java.io包中
輸入流類都是抽象類InputStream(字節輸入流)或抽象類Reader(字符輸入流)的子類;
輸出流類都是抽象類OutputStream(字節輸出流)或抽象類 Writer(字符輸出流)的子類。
1.輸入流
1.1 InputStream(字節輸入流)
常用方法:read()、close()等;該類中錯誤引發IOException異常。
close():關閉此輸入流并釋放與該流關聯的所有系統資源
1.2 Writer(字符輸出流)
處理字符文件
2. 輸出流
2.1 OutputStream(字節輸出流)
常用方法:write(),flush(),close()等;返回值為void,錯誤引發IOException異常。
flush():徹底完成輸出并清空緩存區
close():關閉輸出流
2.2 Reader(字符輸入流)
處理字符文件
3. File類
java.io包中唯一代表磁盤文件本身的對象
調用File類中的方法,實現創建、刪除、重命名文件等操作;
File類對象用來獲取文件本身的信息,如:目錄、長度、讀寫權限等
3.1 文件創建與刪除
//方法1:new File(String pathname)
File file=new File("C:/Users/simou/Desktop/1.txt");
//方法2:new File(String parent,String child)
File file=new File("C:/Users/simou/Desktop","1.txt");
//方法3:new File(File f,String child)
File file=new File("C:/Users/simou/Desktop/","1.txt");
或
File f=new File("C:/Users/simou/Desktop/");
File file=new File(f,"1.txt");
3.2 獲取文件信息
常用方法:getName(),canRead(),canWrite(),exits()/isFile(),length(),
getAbsolutePath()-獲取絕對路徑,
getParent()-獲取父路徑,
isDirectory()-文件時一個目錄,
isHidden()-隱藏文件,
lastModified()-最后修改時間
4. 文件輸入/輸出流
4.1 FileInputStream類、FileOutputStream類 字節流
InputStream類->FileInputStream類;
OutputStream類->FileOutputStream.
常用構造方法:
File file=new File(name);
FileOutputStream out=new FileOutputStream(file);
或
String name="C:/Users/simou/Desktop/1.txt";
FileOutputStream out=new FileOutputStream(name);
package io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class filewrite {
public static void main(String[] args) {
String name="C:/Users/simou/Desktop/1.txt";
File file=new File(name);
try{
FileOutputStream out=new FileOutputStream(file);
byte[] bt="helloworlder".getBytes();
out.write(bt);
out.close();
}catch (Exception e) {
e.printStackTrace();
}
try{
FileInputStream in=new FileInputStream(file);
byte[] te=new byte[1024];
int len=in.read(te);
System.out.println(new String(te,0,len));
System.out.println(file.length());
in.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
4.2 FileReader類、FileWriter類 字符流
Reader->InputStreamReader->FileReader
Writer->OutputStreamWriter->FileWriter
優勢:只要不關閉流,每次調用read()方法就順序讀取源中其余的內容,知道源末尾或流被關閉.
用法:同FileInputStream類
5. 帶緩存的輸入/輸出流
5.1 BufferedInputStream類、BufferedOutputStream類
InputStream類-FilterInputStream類>BufferedInputStream類
OutputStream類-FilterOutputStream類>BufferedOutputStream類
常用構造方法:
BufferedInputStream(InputStream in); //帶有32字節的緩存流
或
BufferedInputStream(InputStream in,int size); //自定義緩存區的緩存流
優勢:帶緩存的輸入/輸出流使用方法flush()來將緩存區的數據強制輸出完
讀取文件過程
file->InputStream ->BufferedInputStream->目的地
5.2 BufferedReader類、BufferedWriter類
Reader->BufferedReader
Writer->BufferedWriter
常用方法:read(),readLine(),write(),flush();newLine()-寫入一個行分隔符;
在使用BufferedWriter類的write()方法時,數據并沒有立刻被寫入至輸出流,而是首先進入緩存區中;若要想立刻將緩存區的數據寫入輸出流,一定要調用flush()方法。
讀取文件過程
字符數據->BufferedWriter->OutputStreamWriter->OutputStream ->file