File 类
File 类包含了获得一个文件或者目录的属性,以及对文件或目录进行更名和删除的方法。(但是不包含读写文件内容的方法)
在文件系统下,每个文件都存放在一个目录下。绝对文件名是由文件名和它的完整路径以及驱动器字母组成。绝对文件名是依赖机器的。相对文件名是相对于当前工作目录的。对于相对文件名而言,完整目录是被忽略的。
在 Windows 中目录的分隔符是反斜杠(\)。但是在 Java 中,反斜杠被用作转义字符标识,所以目录分隔符应该写作两个连续的反斜杠(\\)。
File 类中的方法介绍
-
File(pathname: String)
为一个指定的路径名创建一个 File 对象。路径名可能是一个目录或者一个文件。
-
File(parent: String, child: String)
在目录 parent 下创建一个子路径的 File 对象,子路径可能是一个目录或者一个文件。
-
File(parent: File, child: String)
在目录 parent 下创建一个子路径的 File 对象,parent 是一个 File 对象。
File 的实例是文件或者目录对象,而不是文件和目录本身。
-
exists(): boolean
File 对象代表的文件或者目录存在,返回 true.
public class TestFile { public static void main(String[] args) { String path = "D:\\ioDirectory"; File file = new File(path); System.out.println(file.exists()); // true File file1 = new File(path, "count.txt"); System.out.println(file1.exists()); // true File file2 = new File(file, "count.txt"); System.out.println(file2.exists()); // true File file3 = new File(file, "count.jpg"); System.out.println(file3.exists()); // false } }
-
canRead(): boolean
File 对象代表的文件或者目录存在且是可读的,返回 true.
-
canWrite(): boolean
File 对象代表的文件或者目录存在且是可写的,返回 true.
-
isDirectory(): boolean
File 对象代表的是一个目录,返回 true.
-
isFile(): boolean
File 对象代表的是一个文件,返回 true.
-
isAbsolute(): boolean
File 对象是采用绝对路径创建的,返回 true.
-
isHidden(): boolean
如果 File 对象代表的文件是隐藏的,返回 true。隐藏的确切定义是系统相关的。
public class TestFile { public static void main(String[] args) { String path = "D:\\ioDirectory"; File file = new File(path); System.out.println(file.canRead()); // true System.out.println(file.canWrite()); // true System.out.println(file.isDirectory()); // true System.out.println(file.isFile()); // false System.out.println(file.isAbsolute()); // true System.out.println(file.isHidden()); // flase File file1 = new File(file, "count.txt"); System.out.println(file1.isFile()); // true } }
-
getAbsolutePath(): String
返回 File 对象代表的文件或者目录的完整绝对路径。
-
getCanonicalPath(): String
和 getAbsolutePath() 返回相同,除了从路径中去除冗余的名字。
-
getName(): String
返回 File 对象代表的目录或者文件名的最后名字。
-
getPath(): String
返回 File 对象代表的完整的文件或者路径名。
-
getParent(): String
返回 File 代表的当前目录或者文件的完整父目录。
public class TestFile { public static void main(String[] args) throws IOException { String path = "D:\\ioDirectory"; File file = new File(path); File file1 = new File(file, "count.txt"); System.out.println(file1.getAbsolutePath()); // D:\ioDirectory\count.txt System.out.println(file1.getCanonicalPath()); // D:\ioDirectory\count.txt System.out.println(file1.getName()); // count.txt System.out.println(file1.getPath()); // D:\ioDirectory\count.txt System.out.println(file1.getParent()); // D:\ioDirectory System.out.println(file1.getParentFile()); // D:\ioDirectory } }
-
lastModified(): long
返回文件的最后修改时间。
-
length(): long
返回文件的大小,如果不存在或者是一个目录的话,返回 0.
-
listFile(): File[]
返回一个目录 File 对象下面的所有文件。
[外链图片转存失败(img-pnV89Ns0-1564386326223)(CA56A986CAD044A4B0CB20CBA46D0851)]public class TestFile { public static void main(String[] args) throws IOException { String path = "D:\\ioDirectory"; File file = new File(path); File file1 = new File(file, "count.txt"); System.out.println(file.lastModified()); System.out.println(new Date(file1.lastModified())); System.out.println(file1.length()); File[] files = file.listFiles(); for (File file2 : files) { System.out.print(file2.getName() + "\t"); } System.out.println(); } }
-
delete(): boolean
删除 File 对象代表的文件或者目录,如果删除成功,返回 true.
-
renameTo(dest: File): boolean
将该 File 对象代表的文件或者目录更名为 dest 中指定的名字。如果操作成功,返回 true.
-
mkdir(): boolean
创建该 File 对象代表的目录。如果目录创建成功,则返回 true.
-
mkdirs(): boolean
和 mkdir() 相同,除开在父目录不存在的情况下,将和父目录一起创建。
public class TestFile { public static void main(String[] args) throws IOException { String path = "D:\\ioDirectory"; File file = new File(path); File[] files = file.listFiles(); for (File file1 : files) { // count.txt test.txt test1.txt System.out.print(file1.getName() + "\t"); } System.out.println(); File test = new File(file, "test.txt"); if (test.delete()) { // test.txt 被删除 System.out.println(test.exists()); // false } File test1 = new File(path, "test1.txt"); if (test1.renameTo(new File(path, "rename.txt"))) { // 还是原来的 test1.txt System.out.println(test1.getName()); } files = file.listFiles(); for (File file1 : files) { // count.txt rename.txt System.out.print(file1.getName() + "\t"); } } }
count.txt test.txt test1.txt false test1.txt count.txt rename.txt
注意: -
使用了 file.renameTo(file1: File) 方法之后,file 对象并没有发生改变。所以 file.getName() 得到的结果仍然是重命名之前的 name. 但是实际的文件或者目录名称已经发生了改变。
-
length(): long 方法的返回值单位是字符长度。
-
lastModified(): long 返回的是时间戳,可以根据这个返回值转换成想要的时间格式。