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();
}
}
}