文章目录
Java之
— 输入输出流I/O
参考 https://www.cnblogs.com/yichunguo/p/11775270.html
需要转换—— 转换流 InputStreamReader 、OutputStreamWriter
需要高效—— 缓冲流Bufferedxxx
多个源—— 序列流 SequenceInputStream
对象序列化—— ObjectInputStream、ObjectOutputStream
保证数据的输出形式—— 打印流PrintStream 、Printwriter
操作基本数据,保证字节原样性——DataOutputStream、DataInputStream
1. 字节流
- FileInputStream / FileOutputStream
@Test
public void IOTest() {
// 直接使用文件绝对路径创建流对象
FileInputStream fis = null;
FileOutputStream fos = null;
try {
// 直接使用文件绝对路径创建流对象
fis = new FileInputStream("d:\\desktop\\1.txt");
// 或者使用File对象创建流对象
File FF = new File("d:\\desktop\\2.txt");
fos = new FileOutputStream(FF, true);// 这个true表示追加续写,而不是清空再写数据
int read;
// fis.read() 读取到末尾,返回-1
while ((read = fis.read()) != -1) {
// 读取到的是ascll码,是字节,需要转换为字符才是我们认识的字母或数字
System.out.println(read);
fos.write(read);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// close 释放系统资源。该方法里面包含了flush方法。如果不关闭,数据只是保存到缓冲区,并未保存到文件。
if (fos != null) {
try {
// flush 主要是将缓冲区中,fos里面的数据写入并保存到文件。
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
使用字节数组读取 … 未写完
2. 字符流
- FileReader / FileWriter
@Test
public void IOTest(){
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("d:\\desktop\\1.txt");
fw = new FileWriter("d:\\desktop\\2.txt");
int read ;
while((read = fr.read()) != -1){
System.out.println( (char) read);
fw.write(read