1.文件字符输入流,文件字符输出流都可以写数据
2.方便性不一样
- 字节流适合做一切文件数据的拷贝(文本文件,图片,音频,视频)
- 字节流不适合读取中文内容输出
- 字符流适合做文本文件的操作(读,写)
- 文件字符输入流
package com.heima.test;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class ReaderTest {
public static void main(String[] args) throws IOException {
Reader fr = new FileReader("src/reader.txt");
/*
//汉字做为一个字符读取,不会乱码
//每次读取一个字符
int code = fr.read();
System.out.println(code);
System.out.println((char) code);
int code1 = fr.read();
System.out.println(code1);
System.out.println((char) code1);
*/
int a;
if ((a = -1) != 12) {
}
int code;
while ((code = fr.read()) != -1) {
System.out.print((char) code);
}
//读取中文的最好的方法了,不乱码,性能好
Reader fr1 = new FileReader("src/reade1r.txt");
//一次读取一个字符数组
char[] buffer = new char[1024];//1K字符,不是1KB,因为中文字符占2-3个字节,实际会远远大于1kb
//最后一桶装不满,读多少倒多少
int len;
//read方法返回读取的字符个数,没有可读取的返回-1
while ((len = fr1.read(buffer)) != -1) {
String rs = new String(buffer, 0, len);
System.out.print(rs);
}
}
}
- 文件字符输出流
package com.heima.test;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class WriterDemo {
public static void main(String[] args) throws IOException {
//Writer fw = new FileWriter("src/writer.txt");//覆盖管道,每次启动都会清空文件之前的数据
Writer fw = new FileWriter("src/writer.txt",true);//追加数据
//写一个字符出去
fw.write(98);
fw.write('a');
fw.write('李');
fw.write("\r\n");//换行
//写字符串
fw.write("我是中国人" );
fw.write("\r\n");//换行
//写一个字符数组,直接写字符串就行
char[] chars = "abc我是中国人".toCharArray();
fw.write(chars);
fw.write(new char[]{'e','f','g'});
fw.write("\r\n");//换行
//写字符串的一部分进去
fw.write("abc我是中国人",0,3);
fw.write("\r\n");//换行
//写字符数组的一部分进去
fw.write(chars,3,5);
fw.write("\r\n");//换行
//fw.flush();刷新后流还可以使用
fw.close();//包含刷新,关闭后流无法使用
}
}