文件字符输入,输出流
与FileInputStream字节流对应着的FileReader字符流
与FIieInputStream字节流对应着的FileWriter字符流
字符流常用的构造方法分别是:
- FileReader(String filename)
- FileWriter(String filename)
- FileWriter(String filename,boolean append)
字符输入流和输出流的read和write方法使用字符数组读写数据,即以字符为基本单位处理数据。
具体测试代码如下:
try {
FileReader fr=new FileReader(new File("C:\\Users\\lenovo-pc\\Desktop","新测试1.txt"));
FileWriter fw=new FileWriter(new File("C:\\Users\\lenovo-pc\\Desktop","新测试.txt"));
char ch[]=new char[100];
int n=0;
while((n=fr.read(ch))!=-1){
System.out.println(new String(ch, 0, n));
fw.write(ch, 0, n);
fw.flush();
System.out.println("写入成功");
}
fr.close();
fw.close();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
注意:对于Write流,write方法将数据首先写入到缓冲区,每当缓冲区溢出时,缓冲区的内容被自动写入到目的地,如果关闭流,缓冲区的内容会立刻被写入到目的地。流调用flush()方法可以立刻冲洗当前缓冲区,即将当前缓冲区的内容写入到目的地。
缓冲流:
BufferedReader和bufferedWriter类创建的对象称为缓冲输入,输出流,二者增强了读写文件的能力。
缓冲流的源和目的地必须是字符输入流,和字符输出流。
缓冲流比字符流有更强的读写能力,它可以按行读写文件
构造方法分别为:
- BufferedReader(Reader in);
- BufferedWriter(Reader out);
BufferedWriter有一个独特的向文件写入一个换行符的方法
newLine();
注意:关闭输出流时要首先关闭缓冲输出流,然后关闭缓冲输出流指向的流,即先关闭上层流再关闭底层流。再编写代码的时候只需要关闭上层流,那么上层流的底层流将自动关闭。
具体测试代码:
try {
BufferedReader br=new BufferedReader(
new FileReader(
new File("C:\\Users\\lenovo-pc\\Desktop","新测试.txt")));
BufferedWriter bw=new BufferedWriter(
new FileWriter(
new File("C:\\Users\\lenovo-pc\\Desktop","新测试1.txt")));
String str="";
StringBuffer sb=new StringBuffer();
int i=0;
while((str=br.readLine())!=null){
System.out.println(str);
sb.append(str);
}
System.out.println(sb);
bw.write(new String(sb));
bw.flush();
System.out.println("ok");
bw.close();
br.close();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
喜欢的记得点个关注哟!