File是java.io包下面的一个类,表明与平台无关的文件或者目录。JAVA中,不管文件仍是目录,均可以看做File类的一个对象。File类能对文件或目录新建,删除,获取属性等操做,可是不能直接操做文件内容(文件内容须要用数据流访问)。java
JVM默认会将workspace做为相对路径,即user.dir系统变量所指路径, 即若是这样初始化file对象,File file = new File("."); 就是获取了user.dir路径。数组
String getName() -若是file对象是一个文件,则返回文件名,若是是路径,则返回路径的最后一级ide
File getAbsoluteFile() -返回绝对路径spa
String getParent() -返回file对象所在目录的父目录code
exists()-文件或目录是否存在对象
canRead()-是否可读blog
isFile()-是不是文件接口
isDirectory()-是不是目录get
long lastModified() -最后修改时间it
long length() -文件长度
createFile() -成功true,失败false
delete()
mkdir() -建立目录 ,file对象必须对应一个路径
String[] list() - 若是file对象是一个路径,list()将返回一个数组,若是路径下没有文件和子目录,则数组为empty;若是file对象是一个文件,或者file路径不存在,或者发生IO错误,则list()返回null
File[] listFiles() -同上,只不过返回的是File类型数组
若是FilenameFilter做为file.list()的参数传入,实现FilenameFilter接口的accept方法,能够实现文件过滤。
accept方法有两个参数,dir和name,一般能够对name作条件过滤。
下面是File类的综合演示,
1 package io; 2 3 import java.io.File; 4 import java.io.FilenameFilter; 5 import java.io.IOException; 6 7 public class FileTest { 8 public static void main(String[] args) throws IOException { 9 //JVM默认会将workspace做为相对路径,即user.dir系统变量所指路径 10 File file = new File("."); 11 File file2 = new File("C:/PROJECT/JavaBasic/PROJECT_JavaBasic/tmp.txt"); 12 File file3 = new File("./tmp.txt"); 13 //若是file对象是一个文件,则返回文件名,若是是路径,则返回路径的最后一级 14 System.out.println(file.getName()); 15 //当file为相对路径时,获取父路径可能会出错 16 file3.delete(); 17 System.out.println("父路径:"+file3.getParent()); 18 //获取绝对路径 19 System.out.println(file.getAbsoluteFile()); 20 //getAbsoluteFile返回的是File类型, getAbsolutePath则返回String类型 21 System.out.println(file.getAbsoluteFile().getParent()); 22 //在当前路径下建立一个临时文件,第三个参数必须是路径,不然会报错 23 File tmpFile = File.createTempFile("aaa", ".txt", file); 24 //JVM退出时删除该文件 25 tmpFile.deleteOnExit(); 26 //以系统时间做为名称建立文件 27 File newFile = new File(System.currentTimeMillis()+""); 28 System.out.println("newFile是否存在:"+newFile.exists()); 29 //以指定file对象来建立文件 30 newFile.createNewFile(); 31 System.out.println("newFile是否存是文件:"+newFile.isFile()); 32 System.out.println("newFile是否存是目录:"+newFile.isDirectory()); 33 System.out.println("以newFile对象建立目录是否成功:"+newFile.mkdir()); 34 //若是file对象是一个路径,list()将返回一个数组,若是路径下没有文件和子目录,则数组为empty 35 //若是file对象是一个文件,或者file路径不存在,或者发生IO错误,则list()返回null 36 String[] fileList = file.list(); 37 System.out.println("====当前路径下的全部文件和目录以下===="); 38 for (String fileName : fileList) { 39 System.out.println(fileName); 40 } 41 //listRoots静态方法列出全部磁盘根路径 42 File[] roots = File.listRoots(); 43 System.out.println("====系统全部磁盘根路径以下===="); 44 for (File root : roots) { 45 System.out.println(root); 46 } 47 48 String[] nameList = file.list(new FilenameFilter() { 49 @Override 50 public boolean accept(File dir, String name) { 51 // TODO Auto-generated method stub 52 return name.endsWith(".txt") || new File(name).isDirectory(); 53 } 54 }); 55 System.out.println("====过滤条件后以下===="); 56 for (String filterName : nameList) { 57 System.out.println(filterName); 58 } 59 60 } 61 }
输出结果以下,
1 . 2 父路径:. 3 C:\PROJECT\JavaBasic\PROJECT_JavaBasic\. 4 C:\PROJECT\JavaBasic\PROJECT_JavaBasic 5 newFile是否存在:false 6 newFile是否存是文件:true 7 newFile是否存是目录:false 8 以newFile对象建立目录是否成功:false 9 ====当前路径下的全部文件和目录以下==== 10 .classpath 11 .project 12 .settings 13 1480521332106 14 1480521357843 15 1480521378187 16 1480522448612 17 1480522471511 18 1480522477413 19 1480522484941 20 1480522505253 21 aaa2174524463556527449.txt 22 bin 23 src 24 ====系统全部磁盘根路径以下==== 25 C:\ 26 D:\ 27 E:\ 28 F:\ 29 ====过滤条件后以下==== 30 .settings 31 aaa2174524463556527449.txt 32 bin 33 src