-------android培训、java培训、java学习型技术博客、期待与您交流! ----------
File类方法:
一.创建:1.boolean createNewFile():当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
在指定位置创建文件,如果该文件原本不存在,则创建一个,返回true;如果文件已经存在了,则不创建,返回false.它和输出流不一样,输出流对象一建立就创建文件,就算该文件已存在,它会覆盖原文件。
所以,File的创建文件更合理,没有,我就创建一个,有了,就不创建,所以使用输出流到指定文件时,一般要先把文件,封装成对象,判断一下,看是否此文件已经存在,或者是重名了。
创建文件还有两个,创建临时文件的方法:
2.static File createTempFile(String prefix,String suffix):
创建临时文件,有前缀名和后缀名,后缀名一般为.temp。表示临时文件,它在程序结束之后,会被视为垃圾,当你使用360的清理垃圾时,它会被清理掉。
3.static File createTempFile(String prefix,String suffix,File directory).即:在指定的路径创建临时文件。
4.boolean mkdir():创建此抽象路径名指定的目录(文件夹)。
5.boolean mkdirs():创建多级文件夹。
二.删除:
1.boolean delete();删除地抽象路径名表示的文件或目录。删除失败返回假。
2.void deleteOnExit():在虚拟机终止时,请求删除此抽象路径表示的文件或目录。
三.判断:
1.boolean canExecute():判断应用程序是否可以执行此此抽象路径名表示的文件。如果文件存在,则返回true如果文件不存在,则返回false。
2.boolean exists():判断此抽象路径名表示的文件或目录是否存在。此方法用的频率比较大,在将数据通过输出流输出到文件中时,先判断一下此文件是否存在,如不存在就用File的createNewFile方法创建一个,然后创建指定文件的输出流就不会跑异常了,因为流就不涉及调用window中的创建文件功能了。这就是将文件封装成对的好处。
3.boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件
4.boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。
注意(记住):3和4.在进行判断前,必须要先判断该文件对象封装的内容文件是否存在,通过exists判断。要不然都是false,没有意义
5.boolean isAbsolute():测试此抽象路径名是否为绝对路径名。
它不管文件存不存在,只要创建的文件对象的抽象路径名带盘符(c:\\)它就认为是绝对路径。
判断抽象路径是否为绝对,就看其是否带盘符。
6.boolean isHidden():测试次抽象路径名表示的文件是否是一个隐藏文件。我们c盘中的隐藏的System系统文件,java是访问不了的。一般情况下,我们也不访问隐藏的文件,但是java默认是除了隐藏的System系统文件,它都能读,所以一般要先判断一下此文件是否是隐藏的。
7.boolean reNameTo(File dest):重新命名此抽象路径表示的文件(此文件必须是存在的)。成功是返回true
即;谁调用它,那么谁的抽象路径对应的文件,则必须是存在的。如不存在则返回false。
他其实就是把f1抽象路径对应的文件,剪切并重命名,在粘贴到另一个地方。
四:获取信息:
1.String getName();返回有此抽象路径名表示的文件或目录名
只返回文件名或是文件夹名。
2.String getPath();将此抽象路径明转换为一个路径名字符串
3.String getParent();返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null.如果此抽象路径名是绝对路径名,那么返回的是,绝对路径。
如1:抽象路径是a.txt.那么结果是null
如2:抽象路径是abc\\a.txt.那么返回的是abc
如3:抽象路径是c:\\abc\\a.txt.那么返回的是c:\abc
如果抽象路径是绝对路径,那么getName()+getParent()就等于String get AbsolutePath();
4.String getAbsolutePath();返回此抽象路径名的绝对路径名字符串。
5.File getAbsolutePath();返回此抽象路径名的绝对路径名形式(即:将绝对路径名封装成File对象返回)。
6.long lastModefied():返回的是此抽象路径名表示的文件最后一次被修改的时间。
7.long length():返回由此抽象路径表示的文件的长度(体积)或者叫大小(多少M)。返回有由此抽象路径名表示的文件的长度,如果路径名表示一个目录(文件夹),则返回值的不确定的。如果路径名表示一个文件,则返回文件的大小,如果抽象路径名对应的文件不存在,则返回OL.
其中字节输入流中的 int avaiable()方法:返回的是要读取的数据的字节数,即大小。它就是调用的File类中的length()方法,但是它的空间比较小,返回的字节数不能超过int的极限,而File类中的length()方法空间比较大,可以操作大数据,能返回long个字节数。
注意:抽象路径名可以是文件也可以是文件夹,看你创建的是什么。即:如用方法createNewFile()此路径名就是文件,如果用方法mkdir()则此路径就是文件夹。
而创建文件对象时,它的构造方法中的抽象路径名,分为:相对路径名和绝对路径名(带盘符)
File类中的其他重要方法:
1.static File[] listRoots();列出可用的文件系统根。返回的是File数组。即返回的数组里装的都是File对象。返回的是你笔记本上的几个硬盘符号。
静态方法,全是共享数据,没有操作特有数据,不需要创建对象。
2.String [] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录 调用list方法的file对象必须是封装了一个目录(文件夹)。该目录还必须存在。如果file对象中封装的路径是文件,那返回是空。
3.String [] list(FilenameFilter filter): 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤去的文件和目录。参数是一个过滤器。
其中的FilenameFilter是个接口。叫文件名过滤器,实现此接口的实例可用于过滤器文件名。它里面只有一个方法:boolean accept(File dir, String name):两个参数,表示测试指定文件是否应该包含在某一文件列表中
所以使用此方法,可以使用匿名内部类来实现FilenameFilter接口。
此list方法,过滤依靠是是FilenameFilter实例的,accept方法,来判断文件是否是需要过滤的文件,返回true则说明File对象中指定的目录中的文件都是需要的文件,如果返回false则是把File对象中指定的路径名中的文件全部过滤掉了。
4.File[] listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
此方法和2一样,只不过2的方法是返回的文件夹中文件的名字的的字符串,而他返回的是文件夹中文件的对象的数组,它的功能更强大,因为它返回是文件对象,你还可以通过调用File的方法对其进行操作。比如:获取名称等等。。真实开发中,用它比用方法2更好!
另外此方法返回的数组中的File对象,是以构造函数File(File parent,String child)的方式来创建的对象,对象中的抽象路径名的绝对路径。
但是此方法还有局限性,因为它只能拿到当前文件夹中的所以文件和文件夹,但是当前文件夹中的文件夹之中的文件和文件夹它是拿不到的。所以引出了递归。
5.File[] listFiles(FilenameFilter filter):此方法和方法3是一个道理,只不过把是把文件夹中的文件又封装成了对象返回。