IO 是计算机的输入\输出 Input\Output
机制。
Java IO 流
Java程序中,对于数据的输入\输出操作都是以 流
的方式进行的。java.io
包下提供了各种 IO 接口与实现,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
流的分类
分类 | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
- 按照流向分,可以分为
- 输入流:读取数据
- 输出流:写数据
- 按照操作单元分,可以分为
- 字节流:将数据解释为原始的二进制数据,读写均为字节数据,操作过程不需要编码解码
- 字符流:字符流将原始数据解析成一种字符,文本数据存储依赖文件编码方式,它输入输出需要编码解码
层次结构
Java 提供的 IO 操作类非常丰富,虽然这些他们看着很多,但是使用方法却有一定的规律。
流的操作API
文件字节输入流
- 1.创建流对象
- 2.创建一个缓存字节的容器数组
- 3.定义一个变量,保存实际读取的字节数
- 4.循环读取数据
- 5.操作保存数据的数组
- 6.关闭流
public static void main(String[] args) throws IOException{
File file =new File("1.txt");
FileInputStream fis=new FileInputStream(file);
byte[] bt=new byte[1024];
int count;
while((count=fis.read(bt))!=-1) {
String string =new String(bt,0,count);
System.out.println(string);
}
fis.close();
}
文件字节输出流
- 1.选择流:创建流对象
- 2.准备数据源,把数据源转换成字节数组类型
- 3.通过流向文件当中写入数据
- 4.刷新流
- 5.关闭流
public class FileOutputStreamDemo01 {
public static void main(String[] args) {
// 1.选择流:创建流对象
FileOutputStream fos =null;
try {
fos = new FileOutputStream(new File("c:\\content.txt"),true);
// 2.准备数据源,把数据源转换成字节数组类型
String msg = "春夜喜雨\n好雨知时节,当春乃发生。\n随风潜入夜,润物细无声。";
byte[] data = msg.getBytes();
// 3.通过流向文件当中写入数据
fos.write(data, 0, data.length);
// 4.刷新流
fos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (fos!=null) {
// 5.关闭流
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}