提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
对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.youkuaiyun.com/qq_57893689/article/details/117380201