File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成。值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建、删除、重命名文件和目录,File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
File类相关的方法参考链接:https://docs.oracle.com/javase/9/docs/api/overview-summary.html
-
Field Summary
Fields Modifier and Type Field Description static String
pathSeparator
The system-dependent path-separator character, represented as a string for convenience.static char
pathSeparatorChar
The system-dependent path-separator character.static String
separator
The system-dependent default name-separator character, represented as a string for convenience.static char
separatorChar
The system-dependent default name-separator character.
-
Constructor Summary
Constructors Constructor Description File(File parent, String child)
Creates a newFile
instance from a parent abstract pathname and a child pathname string.File(String pathname)
Creates a newFile
instance by converting the given pathname string into an abstract pathname.File(String parent, String child)
Creates a newFile
instance from a parent pathname string and a child pathname string.File(URI uri)
Creates a newFile
instance by converting the givenfile:
URI into an abstract pathname.
-
Method Summary
All MethodsStatic MethodsInstance MethodsConcrete MethodsDeprecated Methods Modifier and Type Method Description boolean
canExecute()
Tests whether the application can execute the file denoted by this abstract pathname.boolean
canRead()
Tests whether the application can read the file denoted by this abstract pathname.boolean
canWrite()
Tests whether the application can modify the file denoted by this abstract pathname.int
compareTo(File pathname)
Compares two abstract pathnames lexicographically.boolean
createNewFile()
Atomically creates a new, empty file named by this abstract pathname if and only if a file with this name does not yet exist.static File
createTempFile(String prefix,String suffix)
Creates an empty file in the default temporary-file directory, using the given prefix and suffix to generate its name.static File
createTempFile(String prefix,String suffix,File directory)
Creates a new empty file in the specified directory, using the given prefix and suffix strings to generate its name.boolean
delete()
Deletes the file or directory denoted by this abstract pathname.void
deleteOnExit()
Requests that the file or directory denoted by this abstract pathname be deleted when the virtual machine terminates.boolean
equals(Object obj)
Tests this abstract pathname for equality with the given object.boolean
exists()
Tests whether the file or directory denoted by this abstract pathname exists.File
getAbsoluteFile()
Returns the absolute form of this abstract pathname.String
getAbsolutePath()
Returns the absolute pathname string of this abstract pathname.File
getCanonicalFile()
Returns the canonical form of this abstract pathname.String
getCanonicalPath()
Returns the canonical pathname string of this abstract pathname.long
getFreeSpace()
Returns the number of unallocated bytes in the partition named by this abstract path name.String
getName()
Returns the name of the file or directory denoted by this abstract pathname.String
getParent()
Returns the pathname string of this abstract pathname's parent, ornull
if this pathname does not name a parent directory.File
getParentFile()
Returns the abstract pathname of this abstract pathname's parent, ornull
if this pathname does not name a parent directory.String
getPath()
Converts this abstract pathname into a pathname string.long
getTotalSpace()
Returns the size of the partition named by this abstract pathname.long
getUsableSpace()
Returns the number of bytes available to this virtual machine on the partition named by this abstract pathname.int
hashCode()
Computes a hash code for this abstract pathname.boolean
isAbsolute()
Tests whether this abstract pathname is absolute.boolean
isDirectory()
Tests whether the file denoted by this abstract pathname is a directory.boolean
isFile()
Tests whether the file denoted by this abstract pathname is a normal file.boolean
isHidden()
Tests whether the file named by this abstract pathname is a hidden file.long
lastModified()
Returns the time that the file denoted by this abstract pathname was last modified.long
length()
Returns the length of the file denoted by this abstract pathname.String[]
list()
Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname.String[]
list(FilenameFilter filter)
Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter.File[]
listFiles()
Returns an array of abstract pathnames denoting the files in the directory denoted by this abstract pathname.File[]
listFiles(FileFilter filter)
Returns an array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter.File[]
listFiles(FilenameFilter filter)
Returns an array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter.static File[]
listRoots()
List the available filesystem roots.boolean
mkdir()
Creates the directory named by this abstract pathname.boolean
mkdirs()
Creates the directory named by this abstract pathname, including any necessary but nonexistent parent directories.boolean
renameTo(File dest)
Renames the file denoted by this abstract pathname.boolean
setExecutable(boolean executable)
A convenience method to set the owner's execute permission for this abstract pathname.boolean
setExecutable(boolean executable, boolean ownerOnly)
Sets the owner's or everybody's execute permission for this abstract pathname.boolean
setLastModified(long time)
Sets the last-modified time of the file or directory named by this abstract pathname.boolean
setReadable(boolean readable)
A convenience method to set the owner's read permission for this abstract pathname.boolean
setReadable(boolean readable, boolean ownerOnly)
Sets the owner's or everybody's read permission for this abstract pathname.boolean
setReadOnly()
Marks the file or directory named by this abstract pathname so that only read operations are allowed.boolean
setWritable(boolean writable)
A convenience method to set the owner's write permission for this abstract pathname.boolean
setWritable(boolean writable, boolean ownerOnly)
Sets the owner's or everybody's write permission for this abstract pathname.Path
toPath()
Returns ajava.nio.file.Path
object constructed from the this abstract path.String
toString()
Returns the pathname string of this abstract pathname.URI
toURI()
Constructs afile:
URI that represents this abstract pathname.URL
toURL()
1、访问文件和目录
package com.zyjhandsome.io; import java.io.*; public class FileTest { public static void main(String[] args) throws IOException
{
// 以当前路径来创建一个File对象
File file = new File(".");
// 直接获取文件名, 输出一点
System.out.println(file.getName());
// 获取相对路径的父路径可能出错, 下面代码输出null
System.out.println(file.getParent());
// 获取绝对路径
System.out.println(file.getAbsoluteFile());
// 获取绝对路径
System.out.println(file.getAbsoluteFile().getParent());
// 当前路径下创建一个临时文件
File tmpFile = File.createTempFile("aaa", ".txt", file);
// 指定当JVM退出时候删除该文件
tmpFile.deleteOnExit();
// 以系统当前时间作为新文件名来创建新文件
File newFile = new File(System.currentTimeMillis() + "");
System.out.println("newFile对象是否存在1: " + newFile.exists());
// 以指定newFile对象来创建一个文件
newFile.createNewFile();
System.out.println("newFile对象是否存在2: " + newFile.exists());
// 以newFile对象来创建一个目录,因为newFile已经存在,所以下面方法返回false, 即无法创建该目录
System.out.println("newFile.mkdir():" + newFile.mkdir());
System.out.println("----------------------");
// 使用list()方法列出当前路径下的所有文件和路径
String[] fileList = file.list();
for (String fileName : fileList)
{
System.out.println(fileName);
}
System.out.println("----------------------");
// listRoots()静态方法列出所有的磁盘根路径
File[] roots = File.listRoots();
System.out.println("====系统所有根路径如下====");
for (File root : roots)
{
System.out.println(root);
}
}
}
.
null
D:\zhaoyingjun\eclipse-workspace\CollectionTest\.
D:\zhaoyingjun\eclipse-workspace\CollectionTest
newFile对象是否存在1: false
newFile对象是否存在2: true
newFile.mkdir():false
----------------------
.classpath
.project
.settings
1537712414564
1537712424492
1537712893895
1537712926829
1537712940906
1537713158525
1537713167968
1537774060515
aaa1610208071466755969.txt
bin
src
----------------------
====系统所有根路径如下====
C:\
D:\
2、文件过滤器
在File类的list()方法中可以接收一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。这里的FilenameFilter接口和javax.swing.filechooser包下的FileFilter抽象类的功能非常相似,可以把FileFilter当成是FilenameFilter的实现类。
FilenameFilter接口里包含了一个accept(File dir, String name)方法,该方法将依次对指定File的所有子目录或者文件进行迭代,如果该方法返回true,则list()方法会列出该子目录或者文件。
package com.zyjhandsome.io; import java.io.*; public class FilenameFilterTest { public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File(".");
// 使用Lambda表达式(目标类型是FilenameFilter)实现文件过滤器
// 如果文件名以.java结尾, 或者文件对应一个路径,则返回true
String[] nameList = file.list((dir, name) ->
name.endsWith(".java") || new File(name).isDirectory());
for (String name : nameList)
{
System.out.println(name);
}
}
}
.settings
bin
src