1、File类的使用

1.1、常用构造器

  1. >public File(String pathname)
  2. pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前
  3. 路径在系统属性user.dir中存储。
  4. >绝对路径:是一个固定的路径,从盘符开始
  5. >相对路径:是相对于某个位置开始
  6. >public File(String parent,String child)
  7. parent为父路径,child为子路径创建File对象。
  8. >public File(File parent,String child)
  9. 根据一个父File对象和子文件路径创建File对象
  1. /**
  2. * File类的使用
  3. *
  4. * 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)
  5. * 2. File类声明在java.io包下
  6. * 3. File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,
  7. * 并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
  8. * 4. 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点".
  9. *
  10. *
  11. */
  12. /*
  13. 1.如何创建File类的实例
  14. File(String filePath)
  15. File(String parentPath,String childPath)
  16. File(File parentFile,String childPath)
  17. 2.
  18. 相对路径:相较于某个路径下,指明的路径。
  19. 绝对路径:包含盘符在内的文件或文件目录的路径
  20. 3.路径分隔符
  21. windows:\\
  22. unix:/
  23. */
  24. @Test
  25. public void test1(){
  26. //构造器1
  27. File file1 = new File("hello.txt");//相对于当前module
  28. File file2 = new File("D:\\workspace_idea1\\JavaSenior\\day08\\he.txt");
  29. System.out.println(file1);
  30. System.out.println(file2);
  31. //构造器2:
  32. File file3 = new File("D:\\workspace_idea1","JavaSenior");
  33. System.out.println(file3);
  34. //构造器3:
  35. File file4 = new File(file3,"hi.txt");
  36. System.out.println(file4);
  37. }

1.2、路径分隔符

  1. 路径中的每级目录之间用一个路径分隔符隔开。
  2. 路径分隔符和系统有关:
  3. windowsDOS系统默认使用“\”来表示
  4. UNIXURL使用“/”来表示
  5. Java程序支持跨平台运行,因此路径分隔符要慎用。
  6. 为了解决这个隐患,File类提供了一个常量:
  7. public static final String separator。根据操作系统,动态的提供分隔符。
  8. 举例:
  9. File file1 = new File("d:\\atguigu\\info.txt");
  10. File file2 = new File("d:" + File.separator + "atguigu" + File.separator + "info.txt");
  11. File file3 = new File("d:/atguigu");

1.3、常用获取方法

  1. File类的获取功能
  2. public String getAbsolutePath():获取绝对路径
  3. public String getPath() :获取路径
  4. public String getName() :获取名称
  5. public String getParent():获取上层文件目录路径。若无,返回null
  6. public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
  7. public long lastModified() :获取最后一次的修改时间,毫秒值
  8. 通常对文件夹进行的操作:
  9. public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
  10. public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
  11. File类的重命名功能
  12. public boolean renameTo(File dest):把文件重命名为指定的文件路径
  1. /*
  2. public String getAbsolutePath():获取绝对路径
  3. public String getPath() :获取路径
  4. public String getName() :获取名称
  5. public String getParent():获取上层文件目录路径。若无,返回null
  6. public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
  7. public long lastModified() :获取最后一次的修改时间,毫秒值
  8. 如下的两个方法适用于文件目录:
  9. public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
  10. public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
  11. */
  12. @Test
  13. public void test2(){
  14. File file1 = new File("hello.txt");
  15. File file2 = new File("d:\\io\\hi.txt");
  16. System.out.println(file1.getAbsolutePath());
  17. System.out.println(file1.getPath());
  18. System.out.println(file1.getName());
  19. System.out.println(file1.getParent());
  20. System.out.println(file1.length());
  21. System.out.println(new Date(file1.lastModified()));
  22. System.out.println();
  23. System.out.println(file2.getAbsolutePath());
  24. System.out.println(file2.getPath());
  25. System.out.println(file2.getName());
  26. System.out.println(file2.getParent());
  27. System.out.println(file2.length());
  28. System.out.println(file2.lastModified());
  29. }
  30. @Test
  31. public void test3(){
  32. File file = new File("D:\\workspace_idea1\\JavaSenior");
  33. String[] list = file.list();
  34. for(String s : list){
  35. System.out.println(s);
  36. }
  37. System.out.println();
  38. File[] files = file.listFiles();
  39. for(File f : files){
  40. System.out.println(f);
  41. }
  42. }
  43. /*
  44. public boolean renameTo(File dest):把文件重命名为指定的文件路径
  45. 比如:file1.renameTo(file2)为例:
  46. 要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在
  47. */
  48. @Test
  49. public void test4(){
  50. File file1 = new File("hello.txt");
  51. File file2 = new File("D:\\io\\hi.txt");
  52. boolean renameTo = file2.renameTo(file1);
  53. System.out.println(renameTo);
  54. }

重命名后,file1不存在,file2存在,且file2内容变成file1的内容

1.4、常用判断方法

  1. public boolean isDirectory():判断是否是文件目录
  2. public boolean isFile() :判断是否是文件
  3. public boolean exists() :判断是否存在
  4. public boolean canRead() :判断是否可读
  5. public boolean canWrite() :判断是否可写
  6. public boolean isHidden() :判断是否隐藏
  1. File file1 = new File("hello.txt");
  2. file1 = new File("hello1.txt");
  3. System.out.println(file1.isDirectory());
  4. System.out.println(file1.isFile());
  5. System.out.println(file1.exists());
  6. System.out.println(file1.canRead());
  7. System.out.println(file1.canWrite());
  8. System.out.println(file1.isHidden());
  9. System.out.println();
  10. File file2 = new File("d:\\io");
  11. file2 = new File("d:\\io1");
  12. System.out.println(file2.isDirectory());
  13. System.out.println(file2.isFile());
  14. System.out.println(file2.exists());
  15. System.out.println(file2.canRead());
  16. System.out.println(file2.canWrite());
  17. System.out.println(file2.isHidden());

1.5、File类的创建与删除功能

File类的创建功能
 public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
 public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。 如果此文件目录的上层目录不存在,也不创建。
 public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建 注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目 路径下。
File类的删除功能
 public boolean delete():删除文件或者文件夹 删除注意事项: Java中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录

  1. File file1 = new File("hi.txt");
  2. if(!file1.exists()){
  3. //文件的创建
  4. file1.createNewFile();
  5. System.out.println("创建成功");
  6. }else{//文件存在
  7. file1.delete();
  8. System.out.println("删除成功");
  9. }
  10. //文件目录的创建
  11. File file1 = new File("d:\\io\\io1\\io3");
  12. boolean mkdir = file1.mkdir();
  13. if(mkdir){
  14. System.out.println("创建成功1");
  15. }
  16. File file2 = new File("d:\\io\\io1\\io4");
  17. boolean mkdir1 = file2.mkdirs();
  18. if(mkdir1){
  19. System.out.println("创建成功2");
  20. }
  21. //要想删除成功,io4文件目录下不能有子目录或文件
  22. File file3 = new File("D:\\io\\io1\\io4");
  23. file3 = new File("D:\\io\\io1");
  24. System.out.println(file3.delete());

1.6、练习

  1. 1. 利用File构造器,new 一个文件目录file
  2. 1)在其中创建多个文件和目录
  3. 2)编写方法,实现删除file中指定文件的操作
  4. 2. 判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
  5. 3. 遍历指定目录所有文件名称,包括子文件目录中的文件。
  6. 拓展1:并计算指定目录占用空间的大小
  7. 拓展2:删除指定文件目录及其下的所有文件