Java:字节流 文件输出与读入方法 并 实现文件拷贝
文章目录
- 字符流
- FileReader
- FileWrite
字符流
字符流底层就是字节流。
字符流 = 字节流 + 字符集
特点:
输入流:一次读入一个字节,遇到中文时,一次读多个字节。
输出流:底层会把数据按照指定的编码精选编码, 变成汉字。
用于对应纯文本操作。
FileReader
- 创建字符流对象
- 读取数据
无参,返回int, 读到末尾返回-1
有参,传入char[],返回长度
默认也是一个一个字节读,还换转换成10进制返回
强转为char即可 - 释放资源
无参读入:
package com.io.testdemo5;import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class Test5 {public static void main(String[] args) throws IOException {// 创建字符流对象FileReader fr = new FileReader("src\\ccc.txt");// 读取数据int ch;while((ch = fr.read()) != -1) {System.out.print((char)ch);}// 释放资源fr.close();}
}
传入char[] 读入:
package com.io.testdemo5;import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class Test5 {public static void main(String[] args) throws IOException {FileReader fr = new FileReader("src\\ccc.txt");char[] chars = new char[10];int len;while ((len = fr.read(chars)) != -1) {System.out.print(new String(chars, 0, len));}fr.close();}
}
其实是将转十进制,强转为char,放入数组中,这三步合并了。
FileWrite
- 创建对象,指定位置(产生数据传输通道)
参数可以是File对象,也可以是路径 - 写出数据
可以传入字符数组,指定起始位置,长度
也可以传入字符串
或者int十进制,会自动转为字符 - 释放资源
解除资源占用
package com.io.testdemo6;import java.io.FileWriter;
import java.io.IOException;public class Test7 {public static void main(String[] args) throws IOException {// true表示续写FileWriter fw = new FileWriter("src/ccc.txt", true);// 传入整数,字符串,字符数组都可以fw.write(25105); // 我fw.write('一');fw.write("你好阿\r\n");fw.write(new char[] {'a', 'b', 'c'});fw.close();}
}