该类用来将文件 或文件夹 封装成对象,方便对文件和文件夹的属性信息进行操作。
1. 对象的创建与删除 可以使用File类创建一个文件对象,通常使用以下3种构造方法来创建文件对象。
File(String pathname) File(String parent, String child); File(File f, String child); 代码示例:
1 2 3 4 5 6 File file0 = new File("C:/Users/郑松涛/Desktop/demo.txt" ); File file1 = new File("C:\\Users\\郑松涛\\Desktop" ,"demo.txt" ); File file2 = new File(new File("C:\\Users\\郑松涛\\Desktop" ),"demo.txt" ); File dir = new File("f:/myDir" );
代码示例:
1 2 3 4 5 6 7 8 File file = new File("word.txt" ); if (file.exists()) { file.delete(); System.out.println("文件已删除!" ); } else { file.createNewFile(); System.out.println("文件已创建!" ); }
2. 获取文件信息 File类提供了很多方法用于获取一些文件本身的信息,下面以代码的形式演示其用法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 File file = new File("word.txt" ); if (file.exists()) { String fileName = file.getName(); boolean canRead = file.canRead(); boolean canWrite = file.canWrite(); long length = file.length(); String absolutePath = file.getAbsolutePath(); String parentPath = file.getParent(); boolean isFile = file.isFile(); boolean isDirectory = file.isDirectory(); boolean isHidden = file.isHidden(); long lastModifiedTime = file.lastModified(); System.out.println("文件名称:" + fileName); System.out.println("文件是否可读:" + canRead); System.out.println("文件是否可写:" + canWrite); System.out.println("文件长度:" + length); System.out.println("文件绝对路径:" + absolutePath); System.out.println("文件父路径:" + parentPath); System.out.println("是否是文件:" + isFile); System.out.println("是否是目录:" + isDirectory); System.out.println("是否是隐藏文件:" + isHidden); System.out.println("最后修改时间:" + new Date(lastModifiedTime)); } else { System.out.println("文件不存在!" ); }
输出结果:
1 2 3 4 5 6 7 8 9 10 文件名称:word.txt 文件是否可读:true 文件是否可写:true 文件长度:28 文件绝对路径:F:\eclipse-workspace\MyTest\word.txt 文件父路径:null 是否是文件:true 是否是目录:false 是否是隐藏文件:false 最后修改时间:Sun Jan 13 08:40:50 CST 2019
3. 系统根目录和文件容量获取 1 2 3 4 5 6 7 8 9 File[] listRoots = File.listRoots(); for (int i = 0 ; i < listRoots.length; i++) { System.out.print(listRoots[i] + " " ); } File file = new File("src/io/demo.txt" ); long freeSpace = file.getFreeSpace(); long totalSpace = file.getTotalSpace(); long usableSpace = file.getUsableSpace();
4. 获取目录内容 String[] list[]; 该方法获取当前目录下 的文件以及文件夹的名称 ,包含隐藏文件。1 2 3 4 5 File file = new File("f:/sublime text" ); String[] list = file.list(); for (int i = 0 ; i < list.length; i++) { System.out.println(list[i]); }
运行结果:
1 2 3 1.js practice.html table.css
调用list方法的File对象中封装的必须是目录,否则会发生空指针异常。如果目录访问的系统级目录也会发生空指针异常。如果目录存在但是没有内容,则返回一个空数组。
File[] listFiles(); 获取当前目录下 的所有内容,返回路径名 数组 代码示例:
1 2 3 4 5 File file = new File("f:/dir" ); File[] listFiles = file.listFiles(); for (int i = 0 ; i < listFiles.length; i++) { System.out.println(listFiles[i]); }
运行结果:
1 2 3 4 5 6 f:\dir\demo1.txt f:\dir\demo2.txt f:\dir\demo3.java f:\dir\demo4.class f:\dir\dir1 f:\dir\dir2
File[] listFiles(FileFilter filter); 指定过滤器来获取当前目录 下的指定内容 代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class ImplementFilter implements FileFilter { @Override public boolean accept (File file) { if (file.isDirectory()){ return false ; }else { if (file.getName().endsWith(".txt" )){ return true ; } } return false ; } } public class FileDemo { public static void main (String[] args) throws Exception { File file = new File("f:/dir" ); File[] listFiles = file.listFiles(new ImplementFilter()); for (int i = 0 ; i < listFiles.length; i++) { System.out.println(listFiles[i]); } } }
运行结果:
1 2 f:\dir\demo1.txt f:\dir\demo2.txt