1.Write
字符输入流
- 共性的成员方法
write(int c) 写入单个字符
write(char[] c) 写入字符数组
write(char[],int off,int len) 写入字符数组的一部分
write(String str) 写入字符串
write(String str,int off,int len) 写入字符串的一部分
flush() 刷新该流的缓冲
close() 关闭此流
1.1FileWriter
文件字符输入流
- 作用:把内存中的数据以字符的方式写入到硬盘中,可以避免中文乱码问题
- 构造方法:
FileWriter(String name) 写入数据的目的地是一个文件的路径
FileWriter(File file) 写入数据的目的地是一个文件
- 字符输出流的使用步骤
- 创建一个创建一个
FileWriter
对象,构造方法中填写写入数据的目的地
FileWriter file = new FileWriter("G:\\Java\\测试文件夹2\\b.txt");
- 调用创建对象的
write
方法,把数据写入到内存缓冲区(字符转换为字节的过程)
file.write(98);
- 调用创建对象的
flush
方法,将内存缓冲区中的数据,刷新到文件中(可以不用写,close会自动刷新)
file.flush();
- 释放资源
file.close();
- 字符输出流写入数据的其他方法
- 写完整字符数组
- 写部分字符数组
import java.io.FileWriter;
import java.io.IOException;
public class Writer {
public static void main(String[] args) throws IOException {
FileWriter file = new FileWriter("G:\\Java\\测试文件夹2\\b.txt");
char[] chars = {'a', 'b', 'v', '你', '好'};
file.write(chars);
file.flush();
file.write(chars, 3, 2);
file.flush();
file.close();
}
}
- 写完整字符串
- 写部分字符串
import java.io.FileWriter;
import java.io.IOException;
public class Demo02 {
public static void main(String[] args) throws IOException {
FileWriter fileWriter = new FileWriter("G:\\Java\\测试文件夹2\\c.txt");
fileWriter.write("你好,再见!");
fileWriter.flush();
fileWriter.write("123asd123",3,3);
fileWriter.flush();
fileWriter.close();
}
}
-
续写和换行
-
续写
构造方法中:
FileWriter(String name,boolean append) 写入数据的目的地是一个文件的路径,append为true则不会覆盖原文件,继续在原文件中续写,append为false则覆盖原文件
FileWiter(File file,boolean append) 写入数据的目的地是一个文件,append为true则不会覆盖原文件,继续在原文件中续写,append为false则覆盖原文件
- 换行:写换行符号
windows:\r\n
Linux:/n
Mac:/r
2.Reader
字符输入流
- 共性的成员方法
int len = read(); 一次性读取一个字符
int len = read(char[] c); 一次性读取多个字符
close(); 释放资源
Reader
类为抽象类,无法直接使用,需要创造子类使用
2.1FileReader
文件字符输入流
- 作用:把硬盘的文件中的数据以字符的方式读取到内存中,可以避免中文乱码问题
- 构造方法:
FileReader file = new FileReader(String name);
FileReader file = new FileReader(File file);
- 使用步骤
- 创建一个创建一个
FileReader
对象,构造方法中填写读取文件的数据源
FileReader file = new FileReader("G:\\Java\\测试文件夹2\\a.txt");
- 调用对象的
read()
方法,读取文件
int len = 0;
while ((len=fr.read())!=-1){
System.out.print((char)len);
}
- 释放内存
fr.close();
package Reader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Demo01 {
public static void main(String[] args) throws IOException {
FileReader fr= new FileReader("G:\\Java\\测试文件夹2\\qqq.txt");
int len = 0;
while ((len=fr.read())!=-1){
System.out.print((char)len);
}
fr.close();
}
}
- 注意:中文乱码问题:
- 一次读多个字符的方法
int len = 0;
char[] chars = new char[1024];
while ((len=fr.read(chars))!=-1){
System.out.print(new String(chars,0,len));
}
package Reader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Demo01 {
public static void main(String[] args) throws IOException {
FileReader fr= new FileReader("G:\\Java\\测试文件夹2\\qqq.txt");
int len = 0;
char[] chars = new char[1024];
while ((len=fr.read(chars))!=-1){
System.out.print(new String(chars,0,len));
}
fr.close();
}
}