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();
}
}