一、File
(一)新建File对象
File对象表示一个路径,可以是文件路径,也可以是文件夹路径;这个路径可以是存在的,也可以是不存在的。
File类常见的构造方法:
例如:
注意:因为字符串中的\表示转义字符,所以表示路径时要用两个\即\。在windows系统中路径使用\,在linux系统中路径使用/。
可以看出,new File()只是新建了一个file对象,还没有对文件进行操作(没有新建文件)。打印File对象的结果是打印文件路径。
再如:
(二)File里常见的成员方法
1.第一类:判断和获取相关的方法
例如:
当前文件夹下的内容为
添加a.txt文件:
查看a.txt大小:
注意:length()方法只能获取文件的大小,若参数是文件夹则无法获取文件夹的大小,返回值为0或4096(不同操作系统下不一样)无意义。
获取文件名(带后缀)或文件夹名:
返回文件的最后修改事件(毫秒值):
2.第二类:创建与删除相关的方法
注意:delete方法默认只能删除文件与空文件夹,delete方法直接删除不走回收站。
例如,创建新的空的文件:
注意:如果当前的路径表示的文件已经存在,则createNewFile()返回false,创建不成功;如果父级路径不存在,则程序报错;createNewFile()传概念的一定是文件,若是没写文件后缀名则创建无后缀名的文件。
再例如,新建目录:
创建多级文件夹:
删除文件或空文件夹:
3.第三类:获取并遍历
例如:
注意,对于listFiles()方法:
其他获取并遍历的方法:
例如,listRoots()获取系统中所有盘符:
无参list()获取当前路径下所有文件的名字:
有参list()获取指定目录下符合条件所有文件的文件名:
实参为FilenameFilter的匿名内部类,方法accept()的第一个参数dir表示调用list()方法的File对象,第二个表示dir指定目录下的每一个文件或文件夹的路径,方法返回值为true表示获取该文件到数组中,为false则不获取该文件到数组中。
使用listFiles()返回当前文件夹下符合条件的所有文件,注意返回值的数组类型为File:
匿名内部类中的accept()方法与list()方法相同。注意,上图中的accept()参数是File对象中每一个文件的路径。
二、IO流
IO流是存储到盘符和从盘符读取数据的解决方案。File类只能对文件本身进行操作,不能读写文件里面存储的数据。IO流用于读写文件中的数据。
IO流操作文件类型包括字节流和字符流。字节流可以操作所有类型的文件,字符流只能操作纯文本文件。
纯文本文件是能用windows记事本打开且能读懂的文件(例如.txt文件,.md文件)。
抽象类InputStream、OutputStream、Reader和Writer有不同的实现类。