IO流-基础流-字符流
基础流-字符流
<FileReader>输入流
<FileWriter>输出流
基础流-字节流
<FileInputStream>输入流
<FileOutputStream>输出流
流程:
程序-->磁盘
程序<--磁盘
字符流与字节流的用法几乎一模一样.
字节流与字符流的区别
字节流:读写单位是字节(所有文件都由字节组成), 可以传输读写任何文件,
字符流:读写单位是字符,所以只能对文本文件这一类操作,优势在于,对文本之类的数据操作要比字节流快
为了代码可读性,下面代码全部抛出错误,实际使用中要用try/catch捕获
1.<FileWriter>字符输出流
输出流
往a.txt中写数据
public class demo01 {
public static void main(String[] args) throws IOException {
//创建一个基础字符输出流 输出地址为a.txt 没有就自动创建
FileWriter fileWriter = new FileWriter("a.txt");
//往目标地址中输出(文件写入) aabbcc
fileWriter.write("aabbcc");
//用完流记得关掉
fileWriter.close();
}
}
}
a.txt 中的内容
aabbcc
2.<FileReader>字符输入流
输入流
读取a.txt中的数据
public class demo02 {
public static void main(String[] args) throws IOException {
//创建一个基础字符输入流 读取地址a.txt中的数据 没有就报错
FileReader fileReader = new FileReader("a.txt");
//字节流用来接收数据的是字节数组,所以字符流当然是要用字符数组,读取单位是字符,一个字一个字读取
char[] chars = new char[1024];
int len;
while ((len = fileReader.read(chars)) !=-1 ){
System.out.println(new String(chars,0,len));
}
//关流
fileReader.close();
}
}
输出结果
aabbcc
3.<FileReader>与<FileWriter>实现拷贝
注意: 因为字符流的传输单位是字符,所以字符流只能拷贝 <文本文件>
将a.txt拷贝到b.txt
public class demo {
public static void main(String[] args) throws IOException {
//输入流
FileReader fileReader = new FileReader("a.txt");
//输出流
FileWriter fileWriter = new FileWriter("b.txt");
char[] chars = new char[1024];
int len;
//读取a.txt
while ((len = fileReader.read(chars)) != -1){
//写入b.txt
fileWriter.write(chars,0,len);
}
//关流
fileReader.close();
fileWriter.close();
}
}
b.txt 中的内容
aabbcc