File类与IO流

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

对File类和IO流的学习做一个浅回顾,列举一些知识点和注意点,方便日后复习。


一、File类

1、首先构造File类型的对象来描述F:\\a.txt文件,不论该文件是否存在,那在写法上两种写法都是可以的

File f = new File("F:\\a.txt");
File f = new File("f:/a.txt");

2、File类的构造方法有三种。

  • public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
String pathname = "f:\\a.txt";
File file1 = new File(pathname); 
  • public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
String parent = "f:\\a";
String child = "b.txt";
File file3 = new File(parent, child);
  • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
File parentDir = new File("f:\\a");
String child = "b.txt";
File file4 = new File(parentDir, child);

File 类是对文件系统的映射,并不是硬盘上真实的文件,所以 new File(“xxx.xxx”) 只是在内存中创建File文件映射对象,而并不会真正在硬盘中创建文件。

判断映射的文件是否真实存在可以使用 exists(),
若存在即可直接操作, 否则需要调用 createNewFile() 创建真实文件,若为目录则需要使用mkdir()创建一级目录或使用mkdirs()创建多级目录。删除则统一使用delete()。

二、IO流

Java对于文件处理是按照流的方式进行操作的

1、IO流的分类方式:

按数据流的方向:输入流、输出流
按处理数据单位:字节流、字符流

其中输入与输出是相对于应用程序而言的,比如文件读写,读取文件是输入流,写文件是输出流。

因为都是抽象类,所以要用到子类

//字节输入流:InputStream
       子类:FileInputStream
//字节输出流:OutputStream
       子类:FileOutputStream
//字符输入流:Reader
       子类:FileReader
//字符输出流:Writer
       子类:FileWriter

2、构造方法

  • public FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件。
File file = new File("f:\\a.txt");
FileOutputStream streamFile = new FileOutputStream(file);
  • public FileOutputStream(String name): 创建文件输出流以指定的名称写入文件。
FileOutputStream streamString = new FileOutputStream("f:\\a.txt");

之后就是对流进行操作
流操作完毕后,必须释放系统资源,调用close方法。

而关闭之后再要写入则需要重新new,重新new会覆盖(即先清空后写入)之前的内容。
如果想要在原有内容上追加内容,即防止覆盖,则需创建流时加true,这一点需要注意。

FileOutputStream fos = new FileOutputStream("f:\\a.txt",true);

补充

1、构造文件或目录对象时,可以使用File.separator ,是目录分隔符常量,File.separator在Windows中为‘\’,在Linux系统下为‘/’使用此常量建立文件或目录对象就可以让程序运行在不同的系统中。

File f1 = new File("f:"+File.separator+"a.txt");
File f2 = new File("f:"+File.separator+"dir1"+File.separator+"dir1_1");

2、listFiles()可以返回目录中的所有文件,也可以传递进一个筛选器对象,筛选出需要的文件。

        File f3 = new File("F:\\");
//        //获取目录中的所有文件
//        File[] fArr = f3.listFiles();
        //准备一个过滤器接口的引用作为方法的实参
        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File file) {
                //希望将所有的.txt为后缀的文件显示出来
                return file.getName().endsWith(".txt");
            }
        };
        File[] fArr = f3.listFiles(filter);

参考

https://blog.csdn.net/qq_57893689/article/details/117380201

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风吹一夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值