I:
input 输入流,从硬盘上面读取数据到内存里面,这叫输入
适用于磁盘上有一个1.TXT的文件,可以将1.TXT文件内容读取到Java代码中
O:
Output 输出流,从内存中写入到硬盘上面,这叫输出
适用于Java代码有一个String类型的数据,可以将整个数据存入到TXT文件中
输入流
分为 字节输入流 和 字符输入流
输出流
分为字节输出流 和 字符输出流
字节输出流
InputStram 直接的子类FileInputStream
FileInputStream不具备缓冲的效果,需借助BufferedInputStream 实现
//字节输入流
File file = new File("c:/aaa/1.txt");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buf = new byte[4*1024];//每次缓冲4096个字节
while ((length = bis.read(buf)) != -1) {
System.out.println(length);
System.out.println(new String(buf, 0, length));
}
//关闭流
bis.close();
fis.close();
}
}
一个小案例进一步了解 复制视频
public static void copeVideo () throws IOException {
磁盘上面某一个文件夹中先有视频-》写到内存中-》在磁盘的另外文件夹下面写入
//先使用z字节输入流写到内存中,再使用字节输出流写入磁盘
long start = System.currentTimeMillis();//代码走到这个地方会有一个时间标记
//1.创建对应的缓冲字节输入流和缓冲字节输出流对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("C:\Users\wangbo\Desktop\zz2115\day21\video\2字节输入流的入门案例.mp4")));
//从内存中写入到一个文件中
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("c:/aaa/1.mp4")));
//2.准备一个字节数组缓冲区数组
byte[] buf = new byte[1024 * 4];
int length = -1;
//bis.read(buf)) 是从磁盘里面写入到内存
while ((length = bis.read(buf))!= -1) {
bos.write(buf, 0, length);
}
//关闭流
bos.close();
bis.close();
long end = System.currentTimeMillis();//代码走到这个地方又有一个时间标记