File类
封装文件/目录的各种信息,对目录/文件进行操作,但是我们不可以获取到文件/目录中的内容,于是便有了IO流。
IO流
I/O : Input/Output的缩写,用于处理设备之间的数据的传输。
【理解】我们可以把IO流理解为一根管子,连接程序与文件,输送数据流。
用FileInputStream,FileOutputStream向文件读取和写入内容
不论是读取还是输入,IO流的操作总是分为四步
1.获得一个文件对象/数据源对象
2.获得io流对象,连接数据源
3.调用方法写入
4.关闭流对象,后开先关
【举例】
我们访问D盘中文件夹‘网易云’中的文件111.txt
调用FileOutputStream连接数据源进行输出
//1.获得一个文件对象/数据源对象
File file=new File("D:\\网易云\\111.txt");
//2.获得io流对象,连接数据源
FileOutputStream f1=new FileOutputStream(file);
//3.调用方法写入
f1.write("\nasdfhghdafaksdj3".getBytes());
//4.关闭流对象,后开先关
f1.close();
运行效果
我们可以看到字符串已经被输入到文件中,当然我们也可以读取此文件中的字符串。
对刚才的例子进行小小的修改
//1.获得一个文件对象/数据源对象
File file=new File("D:\\网易云\\111.txt");
//2.获得io流对象,连接数据源
// FileOutputStream f1=new FileOutputStream(file);
//3.调用方法写入
// f1.write("\nasdfhghdafaksdj3".getBytes());
//4.关闭流对象,后开先关
// f1.close();
System.out.println("输出成功");
FileInputStream f2=new FileInputStream(file);
int i=f2.read();
while(i!=-1) {
System.out.print((char)i);
i=f2.read();
}
f2.close();
运行结果
可以看出,我们写入的字符串被输出在控制台上。
当我们想要在文件与文件之间传输信息,图片,视频等都可以用此方法。
我们以在两个文件中传输图片为例。
先创建一个文档用来接收要转入的图片,后缀要改成.png
代码实现
我们随便截取一张截图保存在如下位置,调用FileInputStream和FileOutputStream进行传输
File file=new File("D:\\图片\\Screenshots\\QQ截图20240312140303.png");
File file1=new File("D:\\IO流Test\\图片.png");
FileInputStream f1 = new FileInputStream(file);
FileOutputStream f2=new FileOutputStream(file1);
int i=f1.read();
while(i!=-1) {
f2.write(i);
i=f1.read();
}
f2.close();
f1.close();
运行效果
传输成功。