IO流
一、字节流读数据(一个一个读)
1.需求
把文件中的内容读取出来并在控制台显示。
2.方法
1)FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由系统文件中的路径名name命名。
2)int read():读取文件的一个字节数据,读到-1时表示到了文件末尾。
3.步骤
- 创建字节输入流对象
- 调用字节输入流对象的读数据方法
- 释放资源
二、案例一
1.需求
复制文本文件
2.分析
- 复制文本文件其实就是把文本文件的内容从一个文本文件中读取出来(数据源),然后写到另一个文件中(目的地)
- 数据源:读取数据,FileInputStream
- 目的地:写数据,FileOutputStream
3.思路
- 根据数据源创建字节输入流
- 根据目的地创建字节输出流
- 读写数据,复制文本,一次读取一个字节并写一个字节
- 释放资源
4.代码实现
package IOStudy;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo3 {
public static void main(String[] args) throws IOException {
//根据数据源创建字节输入流对象
FileInputStream fis = new FileInputStream("D:\\_A\\B\\D.txt");
//根据目的地创建字节输出流对象
FileOutputStream fos = new FileOutputStream("D:\\_A\\C\\D.txt");
//读写数据
int by;
while ((by = fis.read()) != -1){
fos.write(by);
}
//释放资源
fis.close();
fos.close();
}
}
三、 字节流读数据(一次读一个字节数据数组)
1.需求
把文件中的内容读取出来并在控制台显示。
2.方法
1)FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由系统文件中的路径名name命名。
2)int read(byte[] b):从该输入流读取最多b.length个字节数据到一个数组,返回的是读取到的数组长度,当返回-1时表示文件读取结束。
3.步骤
- 创建字节输入流对象
- 调用字节输入流对象的读数据方法
- 释放资源
四、案例二
1.需求
复制图片
2.思路
- 根据数据源创建字节输入流
- 根据目的地创建字节输出流
- 读写数据,复制文本,一次读取一个字节数组的数据,一次一个字节数组数据
- 释放资源
3.代码实现
package IOStudy;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo5 {
public static void main(String[] args) throws IOException {
//根据数据源创建字节输入流对象
FileInputStream fis = new FileInputStream("D:\\_A\\B\\abc.png");
//根据目的地创建字节输出流对象
FileOutputStream fos = new FileOutputStream("D:\\_A\\C\\abc.png");
//读写数据
byte[] bys = new byte[1024];
int len ;
while ((len = fis.read(bys)) != -1 ){
fos.write(bys,0,len); //从0开始写到读取到的最后一个
}
//释放资源
fis.close();
fos.close();
}
}