1、 字符流
- java将流按照读写单位划分为字节流与字符流.
- java.io.InputStream和OutputStream是所有字节流的超类
- 而java.io.Reader和Writer则是所有字符流的超类,它们和字节流的超类是平级关系.
- Reader和Writer是两个抽象类,里面规定了所有字符流都必须具备的读写字符的相关方法.
- 字符流最小读写单位为字符(char),但是底层实际还是读写字节,只是字符与字节的转换工作由字符流完成.
2、FileReader的用法
构造FileReader流对象,将数据内容写入文件,关闭文件流对象
常用方法:跟字节流类似用法
int read()
读取单个字符。读取的字符,如果已到达流的末尾,则返回 -1
int read(char[] c)
读取一个字符数组,读取的字符,如果已到达流的末尾,则返回 -1 ,c - 目标缓冲区
int read(char[] c,int off,int len)
void close( )
FileReader类是InputStreamReader的子类
FileReader(File file)
FileReader(String name)
FileInputStream和FileReader进行文件的读写并没有什么区别,只是操作单元不同(一个是byte,一个是char
)
3、示例
import java.io.FileReader;
public class TestFileReader {
public static void main(String[] args) {
// 字符流输入 :FileReader用法
try (
//1、创建字符输入流对象
FileReader frd = new FileReader("/Users/xiayimiaoyijiuyonggan/Projects/Kh100/fff.txt")
){
//定义可变字符串对象,接收读取内容
StringBuffer sbd = new StringBuffer();
//定义字符缓冲数组
char[] chars = new char[10];
//2、循环读取文件
int hasRead = -1;
while ((hasRead = frd.read(chars))!=-1) {
//输出读取的字符内容
String readContent = new String(chars,0,hasRead);
System.out.println("读取内容:"+readContent);
sbd.append(readContent);
}
System.out.println("接收的内容:"+sbd);
} catch (Exception e) {
// TODO: handle exception
}
System.out.println("字符输入流成功!!");
}
}
- FileReader的缺点
此方法会将文本里带有的格式消除,比如换行,体现不了
4、FileWriter示例
import java.io.FileWriter;
public class TestFileWriter {
public static void main(String[] args) {
//字符输出流:FileWriter
try (
//创建字符输出流对象
FileWriter fwt = new FileWriter("/Users/xiayimiaoyijiuyonggan/Projects/Kh100/iii.txt")
){
//
String writeContent = "Kh100班,正在学习";
//写文件
fwt.write(writeContent);
//缓冲区
fwt.flush();
} catch (Exception e) {
// TODO: handle exception
}
System.out.println("成功");
}
}