文件字符流
- 创建一个临时存放数据的数组使用 char 数组
文件字符输入流(FileReader)
读取文件操作步骤:
-
建议一个流对象,将已存在的一个文件架在进流中
FileReader fr = new FileReader("Test.txt");
-
创建一个临时存放数据的数组
char[] ch = new char[1024];
-
调用流对象的读取方法,将流中的数据读入到数组中
fr.read(ch);
public class Reader {
/**
* 文件字符输入流
* @param inPath 文件路径
*/
public static void fileReader(String inPath) {
try {
//创建字符输入流的对象
FileReader fr = new FileReader(inPath);
//创建临时存放数据的字符数组
char[] ch = new char[50];
//定义一个输入流的长度
int len = 0;
while ((len = fr.read(ch)) != -1) {
System.out.println(new String(ch, 0, len));
}
//关闭流
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Reader.fileReader("D:\\JAVA\\Java 基础入门\\IO 流\\test\\t1.txt");
}
}
文件字符输出流(FileWriter)
public class Writer {
/**
* 文件字符输出流 FileWriter
* @param txt 输出的内容
* @param outPath 输出的文件
*/
public static void fileWriter(String text,String outPath) {
try {
FileWriter fw = new FileWriter(outPath);
//将数据写到内存中
fw.write(text);
//将内存中的数据刷到硬盘中
fw.flush();
//关闭流
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Writer.fileWriter("hello,world!","D:\\JAVA\\Java 基础入门\\IO 流\\test\\t2.txt");
Reader.fileReader("D:\\JAVA\\Java 基础入门\\IO 流\\test\\t2.txt");
}
}
字符流拷贝文件
- 只能拷贝文本文档
public class Copy {
/**
* 字符流完成拷贝文件,只能拷贝文本文档
* @param inPath 源文件路径
* @param outPath 拷贝到某个地方的文件路径
*/
public static void fileCopy(String inPath,String outPath) {
try {
FileReader fr = new FileReader(inPath);
FileWriter fw = new FileWriter(outPath);
//临时存放数据的字符数组
char[] ch = new char[100];
//定义输入流的长度
int len = 0;
//边读取边写入数据到内存
while ((len = fr.read(ch)) != -1) {
//第一个参数是缓冲字符串数组
//第二个是从哪里开始
//第三个是字符的总长度
fw.write(ch, 0, len);
}
//将内存中的数据刷写到硬盘
fw.flush();
//关闭流
fw.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Copy.fileCopy("D:\\JAVA\\Java 基础入门\\IO 流\\test\\t2.txt",
"D:\\JAVA\\Java 基础入门\\IO 流\\test\\demo\\t2.txt");
}
}
注意
- 定义文件路径时,要用 “ / ” 或者 “ \\ ”
- 在写入一个文件时,如果目录下有同名文件将被覆盖
- 在读取文件时,必须保证被读取的文件已存在,否则会异常