第一种:
File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。 parent - 父抽象路径名 child - 子路径名字符串测试:
/* *c盘下的d文件夹 */ File file = new File("c:"); File file2 = new File(file,"d"); System.out.println(file2);结果:
c:\d第二种:
File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 pathname - 路径名字符串测试:
/* *c盘下的d文件夹 */ File file = new File("c://d"); System.out.println(file);结果:
c:\d第三种:
File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。 parent - 父路径名字符串 child - 子路径名字符串测试:
/* *c盘下的d文件夹 */ File file = new File("c:","d"); System.out.println(file);结果:
c:\d第四种:
File(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。 uri - 绝对的层次化URI,方案等于 "file" ,非空路径组件,以及未定义的权限,查询和片段组件目录分隔符,在UNIX系统上,该字段的值为’/’ ; 在Microsoft Windows系统上是’\’ 。 测试:
System.out.println(File.separator);结果:
\路径分隔符,此字符用于将路径列表中给出的文件序列中的文件名分隔。 在UNIX系统上,这个字符是’:’ ; 在Microsoft Windows系统上,它是’;’ 。 测试:
System.out.println(File.pathSeparator);结果:
;由于Windows和Unix的不同,上面两种符号主要用于跨平台
public String getName()
返回由此抽象路径名表示的文件或目录的名称。 这只是路径名称序列中的最后一个名字。 如果路径名的名称序列为空,则返回空字符串。 结果 由此抽象路径名表示的文件或目录的名称,如果此路径名的名称序列为空,则为空字符串
测试:
/* * d盘下的a文件夹下的test.txt */ File file = new File("d://a//test.txt"); System.out.println(file.getName());结果:
test.txtpublic String getParent()
返回此抽象路径名的父null的路径名字符串,如果此路径名未命名为父目录,则返回null。 抽象路径名的父项由路径名的前缀(如果有)和路径名的名称序列中的每个名称组成,除了最后一个。 如果名称序列为空,则路径名不会指定父目录。
结果 由此抽象路径名命名的父目录的路径名字符串,或 null如果此路径名未命名为父
测试:
/* * d盘下的a文件夹下的test.txt */ File file = new File("d://a//test.txt"); System.out.println(file.getParent());结果:
d:\apublic File getParentFile()
返回此抽象路径名的父null抽象路径名,如果此路径名未命名为父目录,则返回null。 抽象路径名的父项由路径名的前缀(如果有)和路径名的名称序列中的每个名称组成,除了最后一个。 如果名称序列为空,则路径名不会指定父目录。
结果 由此抽象路径名命名的父目录的抽象路径名,或 null如果此路径名未命名为父
测试:
File file = new File("d://a//test.txt"); System.out.println(file.getParentFile()); //返回的是一个File类型的对象,可以使用File的方法结果:
d:\apublic String getPath()
将此抽象路径名转换为路径名字符串。 结果字符串使用default name-separator character以名称顺序分隔名称。 结果 这个抽象路径名的字符串形式
测试:
File file = new File("d://a//test.txt"); System.out.println(file.getPath());结果:
d:\a\test.txtpublic boolean isAbsolute()
测试这个抽象路径名是否是绝对的。 绝对路径名的定义是依赖于系统的。 在UNIX系统上,如果前缀为”/” ,则路径名是绝对的。 在Microsoft Windows系统上,路径名是绝对的,如果其前缀是驱动器说明符,后跟”\” ,或者前缀为”\\” 。 结果 true如果这个抽象路径名是绝对的, false否则
测试:
File file = new File("d://a//test.txt"); System.out.println(file.isAbsolute()); File file2 = new File("a//test.txt"); System.out.println(file2.isAbsolute());结果:
true falsepublic String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。 如果这个抽象路径名已经是绝对的,那么路径名字符串就像getPath()方法一样简单地返回。 如果此抽象路径名为空抽象路径名,则返回由系统属性user.dir命名的当前用户目录的路径名字符串。 否则,该路径名以系统相关的方式解决。 在UNIX系统上,通过将相对路径名解析为当前用户目录,使其成为绝对路径。 在Microsoft Windows系统上,相对路径名是绝对的,通过将其与由路径名命名的驱动器的当前目录(如果有的话)解决; 如果没有,则针对当前用户目录进行解析。
结果 绝对路径名字符串表示与此抽象路径名相同的文件或目录 异常 SecurityException - 如果无法访问所需的系统属性值。
测试:
File file = new File("d://a//test.txt"); System.out.println(file.getAbsolutePath()); File file2 = new File("a//test.txt"); System.out.println(file2.getAbsolutePath());结果:
d:\a\test.txt E:\基础项目\Java_Project\heima\io流\a\test.txtpublic File getAbsoluteFile()
返回此抽象路径名的绝对形式。 相当于new File(this.getAbsolutePath()) 。 结果 绝对的抽象路径名表示与该抽象路径名相同的文件或目录 异常 SecurityException - 如果无法访问所需的系统属性值。
测试:
File file = new File("d://a//test.txt"); System.out.println(file.getAbsoluteFile());//返回的是File类型可以使用File方法操作 File file2 = new File("a//test.txt"); System.out.println(file2.getAbsoluteFile());结果:
d:\a\test.txt E:\基础项目\Java_Project\heima\io流\a\test.txtpublic boolean canRead()
测试应用程序是否可以读取由此抽象路径名表示的文件。 在某些平台上,可以使用特殊权限启动Java虚拟机,以允许它读取标记为不可读的文件。 因此,这个方法可能返回true即使该文件不具有读取权限。 结果 true当且仅当此抽象路径名指定的文件存在并可由应用程序读取时; false否则 异常 SecurityException - 如果存在安全管理员,并且其 SecurityManager.checkRead(java.lang.String)方法拒绝对该文件的读取访问
测试:
File file = new File("test.txt"); //实际存在的文件路径 System.out.println(file.canRead()); File file2 = new File("a//test.txt"); //不存在的文件路径 System.out.println(file2.canRead()); File file3 = new File("src"); //实际存在的文件夹路径 System.out.println(file3.canRead());结果:
true false truepublic boolean canWrite()
测试应用程序是否可以修改由此抽象路径名表示的文件。 在某些平台上,可能会启动具有特殊权限的Java虚拟机,以允许它修改标记为只读的文件。 因此,即使文件被标记为只读,该方法也可能返回true 。 结果 true当且仅当文件系统实际上包含由该抽象路径名表示的文件并且允许应用程序写入该文件时; false否则。 异常 SecurityException - 如果存在安全管理员,并且其 SecurityManager.checkWrite(java.lang.String)方法拒绝对该文件的写访问
测试:
File file = new File("test.txt"); //实际存在的文件路径 System.out.println(file.canWrite()); File file2 = new File("a//test.txt"); //不存在的文件路径 System.out.println(file2.canWrite()); File file3 = new File("src"); //实际存在的文件夹路径 System.out.println(file3.canWrite());结果:
true false truepublic boolean exists()
测试此抽象路径名表示的文件或目录是否存在。 结果 true当且仅当存在由此抽象路径名表示的文件或目录时; false否则 异常 SecurityException - 如果安全管理器存在,并且其 SecurityManager.checkRead(java.lang.String)方法拒绝对文件或目录的读取访问
测试:
File file = new File("test.txt"); //实际存在的文件路径 System.out.println(file.exists()); File file2 = new File("a//test.txt"); //不存在的文件路径 System.out.println(file2.exists()); File file3 = new File("src"); //实际存在的文件夹路径 System.out.println(file3.exists());结果:
true false truepublic boolean isDirectory()
测试此抽象路径名表示的文件是否为目录。 在需要区分I / O异常和文件不是目录的情况下,或同时需要同一文件的几个属性的情况下,可以使用Files.readAttributes方法。
结果 true当且仅当该抽象路径名表示的文件存在且为目录时; false否则 异常 SecurityException - 如果安全管理器存在,并且其 SecurityManager.checkRead(java.lang.String)方法拒绝对该文件的读取访问
测试:
File file = new File("test.txt"); //实际存在的文件路径 System.out.println(file.isDirectory()); File file2 = new File("a//test.txt"); //不存在的文件路径 System.out.println(file2.isDirectory()); File file3 = new File("src"); //实际存在的文件夹路径 System.out.println(file3.isDirectory()); File file4 = new File("a//b"); //不存在的文件路径 System.out.println(file4.isDirectory());结果:
false false true falsepublic boolean isFile()
测试此抽象路径名表示的文件是否为普通文件。 如果文件不是目录,并且另外满足其他依赖于系统的条件,文件是正常的 。 Java应用程序创建的任何非目录文件都保证是一个普通文件。 在需要区分I / O异常与文件不是正常文件的情况下,或同时需要同一文件的几个属性的情况下,可以使用Files.readAttributes方法。
结果 true当且仅当该抽象路径名表示的文件存在且为普通文件时; false否则 异常 SecurityException - 如果安全管理器存在,并且其 SecurityManager.checkRead(java.lang.String)方法拒绝对该文件的读取访问
测试
File file = new File("test.txt"); //实际存在的文件路径 System.out.println(file.isFile()); File file2 = new File("a//test.txt"); //不存在的文件路径 System.out.println(file2.isFile()); File file3 = new File("src"); //实际存在的文件夹路径 System.out.println(file3.isFile()); File file4 = new File("a//b"); //不存在的文件路径 System.out.println(file4.isFile());结果:
true false false falsepublic long length()
返回由此抽象路径名表示的文件的长度。 如果此路径名表示目录,则返回值未指定。 其中要求区分该情况下的I / O异常0L其中相同文件的多个属性是必需的,同时被返回,或者,那么Files.readAttributes可以使用方法。
结果 由此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在, 0L 。 某些操作系统可能会返回0L用于表示系统依赖实体(如设备或管道)的路径名。 异常 SecurityException - 如果存在安全管理员,并且其 SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问 测试:
File file = new File("test.txt"); //实际存在的文件路径 System.out.println(file.length()); File file2 = new File("a//test.txt"); //不存在的文件路径 System.out.println(file2.length()); File file3 = new File("src"); //实际存在的文件夹路径 System.out.println(file3.length()); File file4 = new File("a//b"); //不存在的文件路径 System.out.println(file4.length());结果:
273 0 0 0public boolean createNewFile() throws IOException
当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。 检查文件的存在和文件的创建(如果不存在)是对可能影响文件的所有其他文件系统活动是单一的操作。 注意:此方法不应用于文件锁定,因为生成的协议不能使其可靠地工作。 应该使用FileLock设施。
结果 true如果命名文件不存在并被成功创建; false如果命名文件已经存在 异常 IOException - 如果发生I / O错误 SecurityException - 如果存在安全管理员,并且其 SecurityManager.checkWrite(java.lang.String)方法拒绝对该文件的写入访问
测试:
File file = new File("test1.txt"); //实际存在的文件路径 if(!file.exists()) { //判断文件是否存在,不存在则创建 try { boolean b = file.createNewFile(); System.out.println("是否创建:" + b); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }结果:
是否创建:truepublic boolean delete()
删除由此抽象路径名表示的文件或目录。 如果此路径名表示目录,则目录必须为空才能删除。 请注意, Files类定义了一个delete方法,当一个文件不能被删除时,它会抛出一个IOException 。 这对于错误报告和诊断文件无法被删除的原因很有用。
结果 true当且仅当文件或目录被成功删除时; false否则 异常 SecurityException - 如果安全管理器存在,并且其 SecurityManager.checkDelete(java.lang.String)方法拒绝对该文件的删除访问
测试:
File file = new File("test1.txt"); //实际存在的文件路径 if(file.exists()) { //判断文件是否存在,如果存在就删除 boolean b = file.delete(); System.out.println("是否删除:" + b); }结果:
是否删除:truepublic String[] list()
返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。 如果此抽象路径名不表示目录,则此方法返回null 。 否则返回一个字符串数组,一个用于目录中的每个文件或目录。 表示目录本身和目录的父目录的名称不包括在结果中。 每个字符串都是一个文件名,而不是完整的路径。
不保证结果数组中的名称字符串将以任何特定的顺序出现; 他们不是特别保证按字母顺序出现。
请注意, Files类定义了newDirectoryStream方法来打开目录并遍历目录中文件的名称。 在使用非常大的目录时,这可能会减少资源,并且在使用远程目录时可能会更加灵活。
结果 一组字符串,命名由此抽象路径名表示的目录中的文件和目录。 如果目录为空,则该数组将为空。 如果此抽象路径名不表示目录,或返回I / O错误,则返回null 。 异常 SecurityException - 如果安全管理器存在,并且其 SecurityManager.checkRead(String)方法拒绝对目录的读取访问
测试:
//获取c盘的子路径和子文件 File file = new File("c://"); String[] fileArr = file.list(); for (String string : fileArr) { System.out.println(string); }结果:
$Recycle.Bin 360SANDBOX Documents and Settings hiberfil.sys Intel pagefile.sys PerfLogs Program Files Program Files (x86) ProgramData Recovery swapfile.sys System Volume Information UserGuidePDF Users Windowspublic File[] listFiles()
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。 如果此抽象路径名不表示目录,则此方法返回null 。 否则将返回一个File对象的数组,一个用于目录中的每个文件或目录。 表示目录本身和目录的父目录的路径名不包括在结果中。 每个生成的抽象路径名由使用File(File, String)构造函数的抽象路径名构造。 因此,如果这个路径名是绝对的,那么每个生成的路径名是绝对的; 如果此路径名是相对的,那么每个生成的路径名将相对于相同的目录。
不保证结果数组中的名称字符串将以任何特定的顺序出现; 他们不是特别保证按字母顺序出现。
请注意, Files类定义了newDirectoryStream方法来打开目录并遍历目录中文件的名称。 当使用非常大的目录时,这可能会减少资源。
结果 一组抽象路径名,表示由此抽象路径名表示的目录中的文件和目录。 如果目录为空,则该数组将为空。 如果此抽象路径名不表示目录,或返回I / O错误,则返回null 。 异常 SecurityException - 如果存在安全管理员,并且其 SecurityManager.checkRead(String)方法拒绝对目录的读取访问
测试:
//获取c盘的子目录与子文件 File file = new File("c://"); File[] fileArr = file.listFiles();//返回的是File类型的数组 for (File string : fileArr) { System.out.println(string); }结果:
c:\$Recycle.Bin c:\360SANDBOX c:\Documents and Settings c:\hiberfil.sys c:\Intel c:\pagefile.sys c:\PerfLogs c:\Program Files c:\Program Files (x86) c:\ProgramData c:\Recovery c:\swapfile.sys c:\System Volume Information c:\UserGuidePDF c:\Users c:\Windowspublic File[] listFiles(FileFilter filter)
返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。 该方法的行为与listFiles()方法的行为相同,但返回的数组中的路径名必须满足过滤器。 如果给定的filter是null那么所有的路径名都被接受。 否则,当且仅当值true在路径名上调用过滤器的FileFilter.accept(File)方法时,路径名满足过滤器。 参数 filter - 文件过滤器 结果 一组抽象路径名,表示由此抽象路径名表示的目录中的文件和目录。 如果目录为空,则该数组将为空。 如果此抽象路径名不表示目录,或返回I / O错误,则返回null 。 异常 SecurityException - 如果存在安全管理员,并且其 SecurityManager.checkRead(String)方法拒绝对目录的读取访问 从以下版本开始: 1.2 另请参见: Files.newDirectoryStream(Path,java.nio.file.DirectoryStream.Filter)
测试:
当前文件结构:
过滤器类
import java.io.File; import java.io.FileFilter; public class MyFilter implements FileFilter { public boolean accept(File pathname) { //过滤.txt结尾的文件 return pathname.getPath().endsWith(".txt"); } }测试类:
File file = new File(".");//.表示当前路径 File[] fileArr = file.listFiles(new MyFilter());//返回的是File类型的数组 for (File string : fileArr) { System.out.println(string); }结果:
.\test.txtpublic boolean mkdirs()
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 请注意,如果此操作失败,它可能已成功创建一些必需的父目录。 结果 true当且仅当该目录已创建,以及所有必需的父目录; false否则 异常 SecurityException - 如果安全管理器存在,并且其SecurityManager.checkRead(java.lang.String)方法不允许验证命名目录和所有必需的父目录的存在; 或者如果SecurityManager.checkWrite(java.lang.String)方法不允许创建命名目录和所有必需的父目录
测试:
File file = new File(".//a//b//c//d"); if(!file.exists()) { boolean b = file.mkdirs(); System.out.println("是否创建:" + b); }结果:
是否创建:truepublic boolean equals(Object obj)
测试此抽象路径名与给定对象的相等性。 返回true当且仅当参数不是null ,并且是一个抽象路径名,表示与此抽象路径名相同的文件或目录。 两个抽象的路径名是否相等取决于底层系统。 在UNIX系统上,字母大小写在比较路径名中是重要的; 在Microsoft Windows系统上它不是。 重写: equals在 Object 参数 obj - 要与此抽象路径名进行比较的对象 结果 true当且仅当对象相同时; false否则
