IO流
一、IO流概述和分类
IO流介绍
- IO:输入/输出(Input/Output)
- 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输
- IO流就是用来处理设备间数据传输问题的。常见的应用:文件复制;文件上传;文件下载
IO流的分类
按照数据的流向
- 输入流:读数据
- 输出流:写数据
按照数据类型来分
- 字节流
字节输入流(InputStream)
字节输出流(OutputStream) - 字符流
字符输入流(Reader)
字符输出流(Writer)
二、字节输出流(OutputStream)
字节流写数据的三种方式
public class FileOutputStreamDemo02 { public static void main(String[] args) throws IOException { //FileOutputStream(String name):创建文件输出流以指定的名称写入文件 FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt"); //new File(name) // FileOutputStream fos = new FileOutputStream(new File("myByteStream\\fos.txt")); //FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件 // File file = new File("myByteStream\\fos.txt"); // FileOutputStream fos2 = new FileOutputStream(file); // FileOutputStream fos2 = new FileOutputStream(new File("myByteStream\\fos.txt")); //void write(int b):将指定的字节写入此文件输出流 // fos.write(97); // fos.write(98); // fos.write(99); // fos.write(100); // fos.write(101); // void write(byte[] b):将 b.length字节从指定的字节数组写入此文件输出流 // byte[] bys = {97, 98, 99, 100, 101}; //byte[] getBytes():返回字符串对应的字节数组 byte[] bys = "abcde".getBytes(); // fos.write(bys); //void write(byte[] b, int off, int len):将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 // fos.write(bys,0,bys.length); fos.write(bys,1,3); //释放资源 fos.close(); } }
三、字节输入流(InputStream)
字节流读数据
我们通过两个案例来体会读数据的操作
1.字节流读数据(一次读一个字节)
现步骤
复制文本文件,其实就把文本文件的内容从一个文件中读取出来(数据源),然后写入到另一个文件中(目的地)
数据源:
E:\itcast\xxx.txt — 读数据 — InputStream — FileInputStream 。我们从E盘的itcast文件中读取一个txt文件。
目的地:
myByteStream\xxx.txt — 写数据 — OutputStream — FileOutputStream。将读到的数据写入到myByteStream模块下的txt文档中
2.字节流读数据(一次读一个字节数组)
如果我们需要一次读一个字节数组则需要知道一次读一个字节数组的方法