定义:Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
分类:
1.根据处理数据类型可分:字节流与字符流。
2.根据数据流向可分为:输入流和输出流。
流结构:
1.文件字节输入/输出流
1.1 文件字节输入流(FileInputStream)
构造方法:
常用的方法:
1.2 文件字节输出流
构造方法:
常用的方法:
1.3 例子:
package Hcybx;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
//使用字节输出流写文件
try {
//当文件不存在时会自动创建一个,但是文件夹必须存在(否则报FileNotFoundException的异常)。
FileOutputStream fos = new FileOutputStream("F:\\FOS\\fos.txt");
//创建字符串,并且转换为byte数组
byte[] by = "这是一个字节输出流文件".getBytes();
fos.write(by);
System.out.println("写入成功!");
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.4 例子:
package Hcybx;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
//使用字节输入流读取文件
File file = new File("F:\\FOS\\fos.txt");//必须填写正确的路径
try {
FileInputStream fis = new FileInputStream(file);
//方法一:单个字节获取
String str = "";
int ch = 0;
while((ch = fis.read())!=-1) {
str += (char)ch;
}
System.out.println(new String(str.getBytes("ISO-8859-1")));
//方法二:多个字节读取
// byte[] by = new byte[2];//GBK格式汉字占2个字节 UTF-8格式占3个字节
// while(fis.read(by) != -1) {
// System.out.print(new String(by));
// }
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行截图:
2.文件字符输入流/输出流
!比字节流的好处就是避免乱码的情况。
2.1 文件字符输入流(FileReader)
构造方法:
常用的方法:
2.2 文件字符输出流(FileWriter)
构造方法:
常用的方法:
2.3 例子:
package Hcybx;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
//使用字符输入流写文件
try {
FileWriter fw = new FileWriter("F:\\FileWriter\\fw.txt", true);
fw.write("今天是2019/8/30");
fw.write("\r\n");//换行
fw.write("I love you baby!", 0, 10);//截取部分
fw.write("\r\n");//换行
char[] ch = {'l','o','v','e'};
fw.write(ch);//写入字符数组
System.out.println("写入成功!");
fw.flush();//刷新
fw.close();//记得先刷新后关闭
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.4 例子:
package Hcybx;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
//使用字符输出流读文件
try {
FileReader fr = new FileReader("F:\\FileWriter\\fw.txt");
//方法一:一个一个字符读
int ch = 0;
while((ch = fr.read()) != -1) {
System.out.print((char)ch);
}
//方法二:多个字符读取
// char[] ch2 = new char[1024];
// while(fr.read(ch2) != -1) {
// System.out.println(new String(ch2));
// }
fr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行截图: