java對文件的讀寫(附源碼)
對文件的讀寫操作是學java開發的基礎,讀寫操作又分爲兩種:字符流和字節流,概念稍微闡述下,網上有很多比我講的好,這裏主要是源碼。
字節流和字符流
字節流可用於任何類型的對象,包括二進制對象,字節流提供了處理任何類型的IO操作的功能,對音頻文件、圖片、歌曲處理比較多。
字符流只能處理字符或者字符串,字符流就可以直接處理Unicode字符,對文件操作比較多;
IO流的概括
網上比較經典的一個IO圖借鑑一下,方便一起更好的理解IO流。
輸入輸出流操作的流程
- 使用File類打開文件
- 通過字節流或字符流的子類,指定輸出的位置
- 進行讀/寫操作(BufferedReader / BufferedWriter)
- 關閉輸入/輸出
寫入文件
/**
* 寫入TXT文件
*/
public static void writeFile() {
String path = "D:/test.txt";//路徑的test.txt文件
File file; //使用File類打開文件
FileOutputStream fileOutputStream;//建立一個文件輸出流對象fileOutputStream
OutputStreamWriter outputStreamWriter; //建立一個輸出流對象outputStreamWriter
BufferedWriter bufferedWriter;//文件操作
try {
// 1.使用File類打開一個文件
file = new File(path);
file.createNewFile(); // 創建新文件
// 2. 通過字節流或字符流的子類,指定輸出的位置
fileOutputStream = new FileOutputStream(file);
outputStreamWriter = new OutputStreamWriter(fileOutputStream);
bufferedWriter = new BufferedWriter(outputStreamWriter);
// 3.進行讀/寫操作(BufferedReader / BufferedWriter)
bufferedWriter.write("hello world!\r\n");
bufferedWriter.write("你好!\r\n");
bufferedWriter.flush(); // 把緩存區內容壓入文件
// 4.關閉輸入/輸出
bufferedWriter.close(); // 關閉
fileOutputStream.close();
outputStreamWriter.close();
System.out.println("寫入文件成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
讀取文件
/**
* 讀取TXT文件
*/
public static void readFile() {
String path = "D:/test.txt";//路徑的test.txt文件
File file; //使用File類打開文件
FileInputStream fileInputStream;
InputStreamReader inputStreamReader; //建立一個文件輸入流對象inputStreamReader
BufferedReader bufferedReader;
try {
// 1.使用File類打開一個文件
file = new File(path);
// 2. 通過字節流或字符流的子類,指定輸出的位置
fileInputStream = new FileInputStream(file);
inputStreamReader = new InputStreamReader(fileInputStream);
bufferedReader = new BufferedReader(inputStreamReader);
// 3.進行讀/寫操作(BufferedReader / BufferedWriter)
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println("讀取文件內容:" + line);
}
// 4.關閉輸入/輸出
fileInputStream.close();
inputStreamReader.close();
bufferedReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
源碼
親測可用,歡迎提出修改意見
package com.demo;
import java.io.*;
/**
* @Author: lhb
* @CreateTime: 2019-07-01 17:07:01
* @Description: Java讀取txt文件和寫入txt文件
*/
public class Test {
public static void main(String args[]) {
writeFile();
//readFile();
}
/**
* 寫入TXT文件
*/
public static void writeFile() {
String path = "D:/test.txt";//路徑的test.txt文件
File file; //使用File類打開文件
FileOutputStream fileOutputStream;//建立一個文件輸出流對象fileOutputStream
OutputStreamWriter outputStreamWriter; //建立一個輸出流對象outputStreamWriter
BufferedWriter bufferedWriter;//文件操作
try {
// 1.使用File類打開一個文件
file = new File(path);
file.createNewFile(); // 創建新文件
// 2. 通過字節流或字符流的子類,指定輸出的位置
fileOutputStream = new FileOutputStream(file);
outputStreamWriter = new OutputStreamWriter(fileOutputStream);
bufferedWriter = new BufferedWriter(outputStreamWriter);
// 3.進行讀/寫操作(BufferedReader / BufferedWriter)
bufferedWriter.write("hello world!\r\n");
bufferedWriter.write("你好!\r\n");
bufferedWriter.flush(); // 把緩存區內容壓入文件
// 4.關閉輸入/輸出
bufferedWriter.close(); // 關閉
fileOutputStream.close();
outputStreamWriter.close();
System.out.println("寫入文件成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 讀取TXT文件
*/
public static void readFile() {
String path = "D:/test.txt";//路徑的test.txt文件
File file; //使用File類打開文件
FileInputStream fileInputStream;
InputStreamReader inputStreamReader; //建立一個文件輸入流對象inputStreamReader
BufferedReader bufferedReader;
try {
// 1.使用File類打開一個文件
file = new File(path);
// 2. 通過字節流或字符流的子類,指定輸出的位置
fileInputStream = new FileInputStream(file);
inputStreamReader = new InputStreamReader(fileInputStream);
bufferedReader = new BufferedReader(inputStreamReader);
// 3.進行讀/寫操作(BufferedReader / BufferedWriter)
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println("讀取文件內容:" + line);
}
// 4.關閉輸入/輸出
fileInputStream.close();
inputStreamReader.close();
bufferedReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}