java.io的幾種讀寫文件的方式
一、java把這些不同來源和目標的數據都統一抽象為數據流。
Java語言的輸入輸出功能是十分強大而靈活的。
在Java類庫中,IO部分的內容是很龐大的,因為它涉及的領域很廣泛:標准輸入輸出,文件的操作,網絡上的數據流,字符串流,對象流,zip文件流等等。
這里介紹幾種讀寫文件的方式
二、InputStream、OutputStream(字節流)
//讀取文件(字節流)
FileInputStream in = new FileInputStream("d:\\1.txt");
//寫入相應的文件
FileOutputStream out = new FileOutputStream("d:\\2.txt");
//讀取數據
//一次性取多少字節
byte[] bytes = new byte[2048];
//接受讀取的內容(n就代表的相關數據,只不過是數字的形式)
int n = -1;
//循環取出數據
while ((n = in.read(bytes,0,bytes.length)) != -1) {
//轉換成字符串
String str = new String(bytes,0,n,"UTF-8"); #這里可以實現字節到字符串的轉換,比較實用
System.out.println(str);
//寫入相關文件
out.write(bytes, 0, n);
//清除緩存向文件寫入數據
out.flush();
}
//關閉流
in.close();
out.close();
三、BufferedInputStream、BufferedOutputStream(緩存字節流)使用方式和字節流差不多,但是效率更高(推薦使用)
//讀取文件(緩存字節流)
BufferedInputStream in=new BufferedInputStream(new FileInputStream("d:\\1.txt"));
//寫入相應的文件
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));
//讀取數據
//一次性取多少字節
byte[] bytes = new byte[2048];
//接受讀取的內容(n就代表的相關數據,只不過是數字的形式)
int n = -1;
//循環取出數據
while ((n = in.read(bytes,0,bytes.length)) != -1) {
//轉換成字符串
String str = new String(bytes,0,n,"UTF-8");
System.out.println(str);
//寫入相關文件
out.write(bytes, 0, n);
//清除緩存,向文件寫入數據
out.flush();
}
//關閉流
in.close();
out.close();
四、InputStreamReader、OutputStreamWriter(字節流,這種方式不建議使用,不能直接字節長度讀寫)。使用范圍用做字符轉換
//讀取文件(字節流)
InputStreamReader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"UTF-8");
//寫入相應的文件
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("d:\\2.txt"));
//讀取數據
//循環取出數據
char[] chars = new char[2048];
int len = -1;
while ((len = in.read(chars,0,chars.length)) != -1) {
System.out.println(len);
//寫入相關文件
out.write(chars,0,len);
//清除緩存
out.flush();
}
//關閉流
in.close();
out.close();
五、BufferedReader、BufferedWriter(緩存流,提供readLine方法讀取一行文本)
FileInputStream fileInputStream = new FileInputStream("d:\\1.txt");
FileOutputStream fileOutputStream = new FileOutputStream("d:\\2.txt", true);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"UTF-8");
//讀取文件(字符流)
BufferedReader in = new BufferedReader(inputStreamReader,"UTF-8"));#這里主要是涉及中文
//BufferedReader in = new BufferedReader(new FileReader("d:\\1.txt")));
//寫入相應的文件
BufferedWriter out = new BufferedWriter(outputStreamWriter,"UTF-8"));
//BufferedWriter out = new BufferedWriter(new FileWriter("d:\\2.txt"));
//讀取數據
//循環取出數據
String str = null;
while ((str = in.readLine()) != null) {
System.out.println(str);
//寫入相關文件
out.write(str);
out.newLine();
//清除緩存向文件寫入數據
out.flush();
}
//關閉流
in.close();
out.close();
六、Reader、PrintWriter(PrintWriter這個很好用,在寫數據的同事可以格式化)
//讀取文件(字節流)
Reader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"UTF-8");
//寫入相應的文件
PrintWriter out = new PrintWriter(new FileWriter("d:\\2.txt"));
//讀取數據
//循環取出數據
byte[] bytes = new byte[1024];
int len = -1;
while ((len = in.read()) != -1) {
System.out.println(len);
//寫入相關文件
out.write(len);
//清除緩存
out.flush();
}
//關閉流
in.close();
out.close();