简介
File类的实例代表了一个文件或者一个目录,通过API可以获取这个对象的相关信息。
File类代表的文件或者目录可以真实存在,也可以是不存在的,可以使用File.exists()来判断。
在Windows系统中,绝对路径是以盘符开头的,例如 "E:\javaHello.java"
而在类Unix系统中,绝对路径以"/"开头,例如 "/home/bob/java/Hello.java"
相对路径以某个目录或者文件名开头 ,例如 "imagesa.jpg",但是相对路径单独存在是没有意义的,还需要指定他的父目录。
例如 "E:javaimagesa.jpg" 和 "E:C++imagesa.jpg" 是2个不同的文件。
构造函数
File(String pathname)
通过将给定路径名字符串来创建一个新 File 实例。
File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(URI uri)
通过将给定的 file: URI 来创建一个新的 File 实例。
//"EJavaookservlets_tutorial.pdf" File f = new File("E:"+File.separator +"Java"+File.separator +"book","servlets_tutorial.pdf"); File f1 = new File("E:"+File.separator +"Java"+File.separator +"book"+File.separator +"servlets_tutorial.pdf"); File dir = new File("E:"+File.separator +"Java"+File.separator +"book"); File f2 = new File(dir, "servlets_tutorial.pdf");
静态字段
public static String seperator 系统文件路径分隔符 window下是"" linux 是 "/" public static char seperatorChar 字符类型,同上。 public static String pathSeperator 系统环境变量中的分隔符。 widows下是 ";" linux下是 ":" public static char pathSeperator 字符类型,同上。
实例方法
下面是比较常用的API,更多的参看JDK文档。注意:有些API是只针对目录,而有些只针对文件才有意义。
boolean exists() 这个文件或者目录在机器上是否真实存在。 boolean canExecute() 是否可被程序执行。 boolean canRead() 是否可以被程序读取文件中的数据。 boolean canWrite() 是否可以被程序写入数据到文件。 boolean isFile() 是一个文件吗? boolean isDirectory() 是一个目录吗? boolean isAbsolute() 这个目录或者文件是以绝对路径表示的吗? long length() 返回文件的大小,即字节数。 long lastModified() 返回文件最近一次被修改的时间的long类型时间表示。可以通过 Date类构造转换为年月日格式的时间。通过这个参数用来比较,来确认文件是否被修改过。 String getName() 返回这个文件或者目录的名称。 String getParent() 返回父目录 String[] list() 如果File对象代表的是目录,则返回这个目录下所有内容(文件是文件名,目录是目录名)的String表示的数组。
代码演示
import java.io.File; import java.util.Date; public class AllDemo { public static void main(String[] args) { analyseFile("E:\a.txt"); System.out.println("--------------------"); analyseFile("E:\Java"); } public static void analyseFile(String path) { File file = new File(path); if (file.exists()) { if(file.isFile()) { System.out.println("name:"+file.getName()); System.out.println("isFile?:"+file.isFile()); System.out.println("length:"+file.length()); System.out.println("canRead?:"+file.canRead()); System.out.println("lastModified:"+new Date(file.lastModified()).toLocaleString()); System.out.println("absolute path:"+file.getAbsolutePath()); } else if(file.isDirectory()) { System.out.println("name:"+file.getName()); System.out.println("isDrictory?:"+file.isDirectory()); System.out.println("length:"+file.length()); System.out.println("canRead?:"+file.canRead()); System.out.println("lastModified:"+new Date(file.lastModified()).toLocaleString()); System.out.println("absolute path:"+file.getAbsolutePath()); } } } }
输出:
name:a.txt
isFile?:true
length:10
canRead?:true
lastModified:2017-9-10 23:24:25
absolute path:E:a.txt
--------------------
name:Java
isDrictory?:true
length:4096
canRead?:true
lastModified:2017-9-7 21:19:03
absolute path:E:Java