此文参考自"Java SE程序设计"
编著: 青岛东合信息技术有限公司
算是做笔记,以后想看可以翻阅,顺便分享出来大家可以参照.如有侵权,请联系本人删除
文件
文件是相关记录或放在一起的集合,可以存储在硬盘,光盘,移动存储设备上,存储形式是文本文档,图片,程序等,在编程的过程中经常会对文件进行各种的处理
file类
java.io提供了一系列的类用于对底层系统中的文件进行处理.其中File类是最重要的一个类,该类可以获取文件信息,也可以对文件进行管理.File对象既可以表示文件,也可以表示目录,利用这一特性可以对文件,目录及其属性进行基本操作.File类提供了许多的方法,通过方法可以获得与文件相关的信息,如名称,最后修改日期,文件大小等.
File(String pathname) | 构造方法,用于创建一个指定路径名的File对象 |
boolean canRead() | 判断文件或者目录是否可读 |
boolean createNewFile() | 自动创建一个File对象指定文件名的空文件,只有在指定文件名文件不存在的时候才能成功 |
boolean delete() | 删除File对象,对应的文件或目录 |
boolean exists() | 判断File对象对应的文件或目录是否存在 |
String getAbsolutePath() | 获取File对象对应的文件或目录的绝对路径 |
String getName() | 获取File对象对应的文件或目录的名称 |
String getPath() | 获取File对象对应的文件或目录的路径 |
boolean isDirectory() | 判断File对象指向的是否为一个目录 |
boolean isFile() | 判断File对象指向的是否为一个文件 |
long length() | 返回File对象指向的文件大小,单位为字节 |
boolean mkdir() | 新建一个File对象所定义的一个路径,如果新建成功,返回true,否则返回false,此时File对象必须是目录对象 |
boolean renameTo(File dest) | 重命名File对象对应的文件,如果命名成功,返回true,否则返回false |
long lastModified() | 返回File对象的最后一次被修改时间 |
例子:对File常用方法的部分使用
1 package file类; 2 3 import java.io.*; 4 import java.util.*; 5 public class FlieDemo { 6 public static void main(String args[]) { 7 System.out.println("请输入文件名:"); 8 Scanner sanner = new Scanner(System.in); 9 //从控制台输入文件路径名 10 String pathName = sanner.next(); 11 //根据路径字符串创建一个File对象 12 File file = new File(pathName); 13 //如果文件不存在,则创建一个 14 if(!file.exists()) { 15 try { 16 file.createNewFile(); 17 }catch(IOException e) { 18 e.printStackTrace(); 19 } 20 } 21 System.out.println("文件是否存在:"+file.exists()); 22 System.out.println("是文件么:"+file.isFile()); 23 System.out.println("是目录么:"+file.isDirectory()); 24 System.out.println("名称:"+file.getName()); 25 System.out.println("路径:"+file.getPath()); 26 System.out.println("绝对路径:"+file.getAbsolutePath()); 27 System.out.println("最后修改的时间:"+new Date(file.lastModified()).toString()); 28 System.out.println("文件大小:"+file.length()); 29 } 30 }
执行结果
请输入文件名: text.txt 文件是否存在:true 是文件么:true 是目录么:false 名称:text.txt 路径:text.txt 绝对路径:C:\Users\Administrator\eclipse-workspace\File类的使用\text.txt 最后修改的时间:Sun Jun 10 16:10:38 CST 2018 文件大小:0
注意:File对象只是一个引用,他可能指向一个存在的文件,也可能指向一个不存在的文件,并且File对象不但可以表示一个文件,还可以表示某个目录.
String[] list() | 当File对象为目录时,返回该目录下的所有文件及子目录 |
File[] listFiles() | 返回File对象对应路径下的所有文件所有文件对象数组 |
举例:将JDK根目录下的目录或文件的名称列举出来
1 package file类的list方法; 2 3 import java.io.File; 4 public class ListDemo { 5 public static void main(String args[]) { 6 //根据路径名称创建File对象 7 File file = new File("F:\\Java\\jdk1.8.0_91"); 8 //得到文件名列表 9 if(file.isDirectory()) { 10 String[] fileNames = file.list(); 11 //利用for-each打印各个名称 12 for(String fileName: fileNames) { 13 System.out.println(fileName); 14 } 15 } 16 } 17 }
上述代码中路径字符串双斜杠解释:"\\",第一个"\"是转义符,第二个"\"是反斜杠
执行结果
bin COPYRIGHT db include javafx-src.zip jre lib LICENSE README.html release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
看结果:list()方法将JDK根目录的文件或目录都列举出来了,但是没有标明哪个是目录,哪个是文件.
例子:用listFile()方法将JDK将根目录文件和目录都列举出来并标明
1 package file类的list方法; 2 3 import java.io.File; 4 public class ListFlieDemo { 5 public static void main(String args[]) { 6 //根据路径名称创建File对象 7 File file = new File("F:\\Java\\jdk1.8.0_91"); 8 //得到文件名列表 9 if(file.isDirectory()) { 10 File[] files = file.listFiles(); 11 //利用for-each获取每一个File 对象 12 for(File f : files) { 13 if(f.isFile()) 14 System.out.println("文件:"+f); 15 else 16 System.out.println("目录:"+f); 17 } 18 } 19 } 20 }
执行结果
目录:F:\Java\jdk1.8.0_91\bin 文件:F:\Java\jdk1.8.0_91\COPYRIGHT 目录:F:\Java\jdk1.8.0_91\db 目录:F:\Java\jdk1.8.0_91\include 文件:F:\Java\jdk1.8.0_91\javafx-src.zip 目录:F:\Java\jdk1.8.0_91\jre 目录:F:\Java\jdk1.8.0_91\lib 文件:F:\Java\jdk1.8.0_91\LICENSE 文件:F:\Java\jdk1.8.0_91\README.html 文件:F:\Java\jdk1.8.0_91\release 文件:F:\Java\jdk1.8.0_91\src.zip 文件:F:\Java\jdk1.8.0_91\THIRDPARTYLICENSEREADME-JAVAFX.txt 文件:F:\Java\jdk1.8.0_91\THIRDPARTYLICENSEREADME.txt
String[] list(FilenameFilter filter) | 返回一个字符串数组,这些字符串为此File对象对应的目录中满足指定过滤条件的文件和子目录 |
File[] listFiles(FilenameFilter filter) | 返回File对象数组,这些File对象为此File对象对应的目录中满足指定过滤条件的文件和子目录 |
注意:FileNameFilter是一个接口,她只有一个accept()方法,所以只需要定义一个类来实现这个接口,或者可以定义一个匿名类.
举例:利用list()方法列举JDK根目录下的所有以html或htm为后缀的网页文件
1 package file类的list方法; 2 3 import java.io.*; 4 public class HtmlList { 5 public static void main(String args[]) { 6 //根据路径名称创建File对象 7 File file = new File("F:\\Java\\jdk1.8.0_91"); 8 //得到文件名列表 9 if(file.exists() && file.isDirectory()) { 10 //创建FileNameFilter类型的匿名类,并作为参数传入到list方法中 11 String[] fileNames = file.list(new FilenameFilter() { 12 public boolean accept(File dir,String name) { 13 //如果文件的后缀名为.html或.htm则满足条件 14 return (name.endsWith(".html") || name.endsWith(".htm")); 15 } 16 }); 17 for(String fileName: fileNames) { 18 System.out.println(fileName); 19 } 20 } 21 } 22 }
执行结果
README.html