File类的使用
File 类的使用:常用构造器
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 27 28 29 30 31 @Test public void test1 () { File file1 = new File("hello.txt" ); File file2 = new File("D:\\workspace_idea1\\JavaSenior\\day08\\he.txt" ); System.out.println(file1); System.out.println(file2); File file3 = new File("D:\\workspace_idea1" ,"JavaSenior" ); System.out.println(file3); File file4 = new File(file3,"hi.txt" ); System.out.println(file4); }
类的使用:常用方法 File类的获取功能 1 2 3 4 5 6 7 8 9 10 public String getAbsolutePath () :获取绝对路径public String getPath () :获取路径public String getName () :获取名称public String getParent () :获取上层文件目录路径。若无,返回null public long length () :获取文件长度(即:字节数)。不能获取目录的长度。public long lastModified () :获取最后一次的修改时间,毫秒值如下的两个方法适用于文件目录: public String[] list () :获取指定目录下的所有文件或者文件目录的名称数组public File[] listFiles () :获取指定目录下的所有文件或者文件目录的File数组
代码示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 @Test public void test2 () { File file1 = new File("hello.txt" ); File file2 = new File("d:\\io\\hi.txt" ); System.out.println(file1.getAbsolutePath()); System.out.println(file1.getPath()); System.out.println(file1.getName()); System.out.println(file1.getParent()); System.out.println(file1.length()); System.out.println(new Date(file1.lastModified())); System.out.println(); System.out.println(file2.getAbsolutePath()); System.out.println(file2.getPath()); System.out.println(file2.getName()); System.out.println(file2.getParent()); System.out.println(file2.length()); System.out.println(file2.lastModified()); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 @Test public void test3 () { File file = new File("D:\\workspace_idea1\\JavaSenior" ); String[] list = file.list(); for (String s : list){ System.out.println(s); } System.out.println(); File[] files = file.listFiles(); for (File f : files){ System.out.println(f); } }
File类的重命名功能 1 2 3 public boolean renameTo (File dest) :把文件重命名为指定的文件路径 比如:file1.renameTo (file2) 为例: 要想保证返回true ,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。
1 2 3 4 5 6 7 8 9 @Test public void test4 () { File file1 = new File("hello.txt" ); File file2 = new File("D:\\io\\hi.txt" ); boolean renameTo = file2.renameTo(file1); System.out.println(renameTo); }
File类的判断功能 1 2 3 4 5 6 public boolean isDirectory () :判断是否是文件目录public boolean isFile () :判断是否是文件public boolean exists () :判断是否存在public boolean canRead () :判断是否可读public boolean canWrite () :判断是否可写public boolean isHidden () :判断是否隐藏
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 @Test public void test5 () { File file1 = new File("hello.txt" ); file1 = new File("hello1.txt" ); System.out.println(file1.isDirectory()); System.out.println(file1.isFile()); System.out.println(file1.exists()); System.out.println(file1.canRead()); System.out.println(file1.canWrite()); System.out.println(file1.isHidden()); System.out.println(); File file2 = new File("d:\\io" ); file2 = new File("d:\\io1" ); System.out.println(file2.isDirectory()); System.out.println(file2.isFile()); System.out.println(file2.exists()); System.out.println(file2.canRead()); System.out.println(file2.canWrite()); System.out.println(file2.isHidden()); }
File类的创建功能 1 2 3 4 5 6 7 8 创建硬盘中对应的文件或文件目录 public boolean createNewFile () :创建文件。若文件存在,则不创建,返回false public boolean mkdir () :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。public boolean mkdirs () :创建文件目录。如果此文件目录存在,就不创建了。如果上层文件目录不存在,一并创建 删除磁盘中的文件或文件目录 public boolean delete () :删除文件或者文件夹 删除注意事项:Java中的删除不走回收站。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Test public void test6 () throws IOException { File file1 = new File("hi.txt" ); if (!file1.exists()){ file1.createNewFile(); System.out.println("创建成功" ); }else { file1.delete(); System.out.println("删除成功" ); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 @Test public void test7 () { File file1 = new File("d:\\io\\io1\\io3" ); boolean mkdir = file1.mkdir(); if (mkdir){ System.out.println("创建成功1" ); } File file2 = new File("d:\\io\\io1\\io4" ); boolean mkdir1 = file2.mkdirs(); if (mkdir1){ System.out.println("创建成功2" ); } File file3 = new File("D:\\io\\io1\\io4" ); file3 = new File("D:\\io\\io1" ); System.out.println(file3.delete()); }
练习
1.利用File构造器,new 一个文件目录file 1)在其中创建多个文件和目录 2)编写方法,实现删除file中指定文件的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 public class FileDemo { @Test public void test1 () throws IOException { File file = new File("D:\\io\\io1\\hello.txt" ); File destFile = new File(file.getParent(),"haha.txt" ); boolean newFile = destFile.createNewFile(); if (newFile){ System.out.println("创建成功!" ); } } }
2.判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 public class FindJPGFileTest { @Test public void test1 () { File srcFile = new File("d:\\code" ); String[] fileNames = srcFile.list(); for (String fileName : fileNames){ if (fileName.endsWith(".jpg" )){ System.out.println(fileName); } } } @Test public void test2 () { File srcFile = new File("d:\\code" ); File[] listFiles = srcFile.listFiles(); for (File file : listFiles){ if (file.getName().endsWith(".jpg" )){ System.out.println(file.getAbsolutePath()); } } } @Test public void test3 () { File srcFile = new File("d:\\code" ); File[] subFiles = srcFile.listFiles(new FilenameFilter() { @Override public boolean accept (File dir, String name) { return name.endsWith(".jpg" ); } }); for (File file : subFiles){ System.out.println(file.getAbsolutePath()); } } }
3.遍历指定目录所有文件名称,包括子文件目录中的文件。
拓展1:并计算指定目录占用空间的大小
拓展2:删除指定文件目录及其下的所有文件
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 public class ListFilesTest { public static void main (String[] args) { File dir = new File("E:\\teach\\01_javaSE\\_尚硅谷Java编程语言\\3_软件" ); printSubFile(dir); } public static void printSubFile (File dir) { File[] subfiles = dir.listFiles(); for (File f : subfiles) { if (f.isDirectory()) { printSubFile(f); } else { System.out.println(f.getAbsolutePath()); } } } public void listSubFiles (File file) { if (file.isDirectory()) { String[] all = file.list(); for (String s : all) { System.out.println(s); } } else { System.out.println(file + "是文件!" ); } } public void listAllSubFiles (File file) { if (file.isFile()) { System.out.println(file); } else { File[] all = file.listFiles(); for (File f : all) { listAllSubFiles(f); } } } public long getDirectorySize (File file) { long size = 0 ; if (file.isFile()) { size += file.length(); } else { File[] all = file.listFiles(); for (File f : all) { size += getDirectorySize(f); } } return size; } public void deleteDirectory (File file) { if (file.isDirectory()) { File[] all = file.listFiles(); for (File f : all) { deleteDirectory(f); } } file.delete(); } }