流类关心的是文件的内容,而File类关心的是在磁盘上文件的存储。
File对象最简单的构造器将接受一个(完全的)文件名。如果你没有提供路径名,那么Java就会使用当前路径。“当前目录”是执行虚拟机的进程的当前目录。如果你是通过命令行启动虚拟机的,那么它就是你启动java可执行文件的目录。
对这个构造器的调用不会在指定文件不存在情况下创建一个具有指定文件名的文件。实际上,从File对象中创建文件是由文件流类的构造器或File类中的createNewFile方法完成的,createNewFile方法只有在具有指定文件名的文件不存在的情况下才会创建文件,并且会返回一个boolean值,来说明文件是否被成功创建。
另一方面,一旦有了File对象, File类中exist方法就可以告知具有这个文件名的文件是否存在。可以打印并不存在的文件的路径名。
File(String path,String name)
它可以在由path参数指定的目录中创建具有给定名字的File对象。(如果path参数为null,这个构造器将使用当前目录创建File对象。)File(File dir,String name)
其中, File对象表示一个目录,与前面一样,如果dir为null,这个构造器就会在当前目录中创建一个File对象。可以使用isDirectory和isFile方法来了解一个文件对象表示的到底是文件还是目录.可以使用mkdir来创建一个目录。如果一个文件对象表示的是目录,使用list()方法可以获得由这个目录下的文件名构成的数组。
可以使用FileNameFilter对象作为list方法的参数来减小列表长度,而不是列出目录中所有的文件。这些对象是满足FileNameFilter接口的类的实例。要实现accept();
boolean accept(File dir, String name)
应该定义为在文件能够匹配过滤器标准时返回true。
参数: dir 一个表示包含文件目录的File对象
name 文件名
这个就是过滤用的,满足accept中的条件就返回。
比如
boolean accept(File dir,String name){
return name.endsWith(xxxx);//只有文件名以xxxx结尾的可以返回。
}
File a = new File("F:"+File.separator+"cccc.txt");
File a = new File("dir","filename");
上面两种方法就可以提供恰当的分隔符。boolean canRead()
boolean canWrite()
boolean canExecute()
表明文件是否可读、可写或可执行。
boolean setReadable(boolean state, boolean ownerOnly)
boolean setWritable(boolean state, boolean ownerOnly)
boolean setExecutable(boolean state, boolean ownerOnly)
设置这个文件的可读、可写或可执行状态。如果ownerOnly为true,状态设置只对文件拥有者有效,否则,对所有人有效。这些方法在设置状态成功后返回true。
static boolean createTempFile(String prefix, String suffix)
static boolean createTempFile(String prefix, String suffix, File directory)
在系统的默认临时目录或给定目录中创建一个临时文件, 并使用给定的前缀或后缀来生成文件名。
参数: prefix 至少3个字符长的前缀字符串
suffix 可选的后缀,如果为null,就是用.tmp
directory 创建文件的目录。如果为null,就在当前工作目录中创建文件
boolean delete()
尝试删除这个文件,如果文件被删除,则返回true,否则返回false。
void deleteOnExit()
请求在虚拟机关闭时将文件删除。
boolean exists()
如果这个文件或目录存在,则返回true,否则返回false。
String getAbsolutePath()
返回包含绝对路径名的字符串。提示:应使用getCanonicalPath来替代它。
File getCanonicalFile()
返回包含这个文件的规范路径名的File对象。特别是它会移除冗余的"."目录,使用恰当的目录分隔符,并可以获得底层文件系统所选择的大小写处理方式。
String getCanonicalPath()
返回包含这个文件的规范路径名的字符串。特别是它会移除冗余的"."目录,使用恰当的目录分隔符,并可以获得底层文件系统所选择的大小写处理方式。
String getName()
返回包含这个File对象的文件名的字符串(不包含路径信息)。
String getParent()
返回这个File对象的父亲名字的字符串。如果这个File对象是一个文件,那么它的父亲就是包含它的目录;如果它是一个目录,那么它的父亲就是其父目录,如果它没有父目
录,那么它的父亲就是null。
File getParentFile()
返回这个File目录的父目录的File对象。请查看getParent中关于“父亲”的定义。
String getPath()
返回包含这个文件的路径名的字符串。
boolean isDirectory()
如果这个File表示一个目录,则返回true,否则返回false。
boolean isFile()
如果这个File对象表示一个文件而不是一个目录或一个设备,则返回true。
boolean isHidden()
如果这个File对象表示的是一个隐藏文件或目录,则返回true。
long lastModified()
返回这个文件最后被修改的时间(记录从GMT时间1970年1月1日0时以来的毫秒数),或者在文件不存在时返回0。使用Date(long)构造器可以将这个值转换成一个日期。
long length()
返回这个文件按照字节度量的长度,或者在文件不存在时返回0。
String[] list()
返回由这个File对象包含的文件名和目录名构成的字符串数组,或者在这个File不表示目录时返回null。
String[] list(FilenameFilter filter)
返回由这个File对象包含的满足过滤器条件的文件名和目录名构成的字符串数组,或者在不存在符合条件的内容时返回null。
File[] listFiles()
返回由这个File对象包含的文件和目录所对应的File对象构成的数组,或者在这个File不表示目录时返回null。
File[] listFiles(FilenameFilter filter)
返回由这个File对象包含的满足过滤器条件的文件和目录所对应的File对象构成的数组,或者在不存在符合条件的内容时返回null。
static File[] listRoots()
返回由所有可获得的文件根对应的File对象构成的数组(例如,在Windows系统上,可以获得表示所安装的硬盘驱动器的多个File对象,包括本地驱动器和网络映射驱动器。
在UNIX系统上,你只能获得"/")。
boolean createNewFile()
自动创建一个由File对象给定名字的新文件。也就是说,检查文件名和创建文件不会被文件系统的其他行为所中断。在这个方法创建文件成功后返回true。
boolean mkdir()
创建一个由这个File对象给定名字的子目录,如果子目录创建成功则返回true,否则返回false。
boolean mkdirs()
与mkdir不同,这个方法在必要时将创建父目录,只要有必需的目录未能创建成功,则返回false。
boolean renameTo(File newName)
如果文件名被修改,则返回true,否则返回false。
boolean setLastModified(long time)
设置这个文件的最后修改时间,如果设置成功则返回true,否则返回false。 time是一个表示从GMT时间1970年1月1日0时以来的毫秒数的长整数,可以使用Date类的getTime
方法来计算这个值。
boolean setReadOnly()
将这个文件设置成只读,如果设置成功则返回true,否则返回false。
URL toURL()
将这个File对象转换成一个文件的URL。
long getTotalSpace()
long getFreeSpace()
long getUsableSpace()
获得由File对象所描述的分区的总大小、未分配字节的数量和可用字节的数量。如果这个File对象描述的不是一个分区,这些方法将返回0。