• IO流之File类


    File类

    File 对应的硬盘上的文件或者文件夹

    位于java.io包下

    File对文件/文件夹进行操作,但是无法对文件内容进行操作,读取/写入不可以操作,但是可以创文件夹/读取文件路径,IO流才可以进行操作

    文件/文件夹的路径:linux使用/作为文件分割符,但是windows使用\作为文件分割符,java中可以处理文件分割符,支持多平台!!但是用 \ 时,由于在java中\作为转移符号,所以使用双杠\\,或者使用这个:

     使用File类

    1. //不推荐写法
    2. //File file = new File("D:\\实验室\\七龙珠.txt");
    3. //推荐写法 绝对路径写法
    4. File file = new File("D:/java");
    5. File file11 = new File("D:/实验室");
    6. //推荐写法二
    7. File file1 = new File("D:/实验室","七龙珠.txt");
    8. File file2 = new File(file11,"七龙珠.txt");
    9. //File不会检查文件/目录是否存在 但是File对象依旧可以存在
    10. File file4 = file.getAbsoluteFile();
    11. //判断文件是否存在
    12. System.out.println(file2.exists());
    13. //获取绝对路径
    14. System.out.println(file.getAbsoluteFile());
    15. //不同对象,指向同一个文件
    16. System.out.println(file4);
    17. System.out.println(file);
    18. //File file1 = new File("D:/实验室","七龙珠.txt");
    19. //File file4 = file.getAbsoluteFile();
    20. System.out.println("file与file4是否相等"+(file == file4));
    21. //获取文件名
    22. String name = file.getName();
    23. System.out.println("文件名:"+name);
    24. //获取上级目录路径
    25. File parentFile = file.getParentFile();
    26. System.out.println("上级目录:"+parentFile);
    27. //返回文件的字节大小
    28. System.out.println("文件的字节大小:"+file.length());//单位是字节
    29. //返回抽象路径名表示的文件上次修改的时间 -> 返回的是日期的毫秒值
    30. System.out.println("文件上次修改的时间:"+file.lastModified());
    31. //创建一个文件
    32. if(!file.exists()){
    33. try {
    34. file.createNewFile();
    35. System.out.println("文件创建成功");
    36. } catch (IOException e) {
    37. //如果上机目录不存在就会有错误 创建不了对应的文件
    38. e.printStackTrace();
    39. }
    40. }
    41. //创建文件夹 mkdir只创建本机目录,如果上级不存在,不能创建
    42. File file5 = new File("D:/java/a");
    43. boolean mkdir = file5.mkdir();
    44. System.out.println("目录是否创建成功:" + mkdir);
    45. //对于mkdirs,不同于mkdir 会把不存在的上级目录帮你创建
    46. File file6 = new File("D:/java/a/b/c");
    47. boolean mkdirs = file6.mkdirs();
    48. System.out.println("是否创建成功:" + mkdirs);
    49. //删除文件或者目录
    50. //delete() -> 只可删除空目录!important
    51. boolean delete1 = file6.delete();
    52. System.out.println("文件是否删除:" + delete1);
    53. //判断是一个文件还是文件夹 true是一个文件 false表示不是文件
    54. file.isFile();
    55. file.isDirectory();
    56. //重命名
    57. //file.renameTo();
    58. //目录的遍历
    59. /*File file = new File("D:/java/a/b");//得到对应的子文件,目录的名字
    60. String[] Filename = file.list();
    61. for(String filename:Filename){
    62. System.out.println(filename);
    63. }*/
    64. //筛选得到.txt结尾的文件
    65. File file = new File("D:/java/a/b/c");//得到对应的子文件,目录的名字
    66. String[] Filename = file.list(new FilenameFilter() {
    67. //b目录有一个目录遍历到子文件/子目录就会调用一次方法
    68. @Override
    69. public boolean accept(File dir, String name) {
    70. //dir:表示目录的路径
    71. // System.out.println("dir:"+dir);
    72. // //name:当前目录的子文件和子目录名字
    73. // System.out.println("name:"+name);
    74. // return true;//false就是为了筛选子文件,子目录 true就是返回这个文件
    75. File subFile = new File(dir,name);
    76. return name.endsWith(".txt") && subFile.isFile();
    77. }
    78. });
    79. for(String filename:Filename){
    80. System.out.println(filename);
    81. }
    82. //遍历得到子文件 子目录File对象
    83. // File[] files = file.listFiles();
    84. // for (File file1: files) {
    85. // System.out.println(file1.getParentFile()+"\\"+file1.getName());
    86. // }
    87. /*D:\java\a\b\c\aa.txt
    88. D:\java\a\b\c\bb.txt
    89. D:\java\a\b\c\cc.xls*/
    90. File[] files = file.listFiles(new FileFilter() {
    91. @Override
    92. public boolean accept(File pathname) {
    93. return pathname.getName().endsWith(".txt") && pathname.isFile();
    94. }
    95. });
    96. for (File file1 : files) {
    97. System.out.println(file1);
    98. }

     方法递归

    方法内部调用自己,也是一个循环,但是递归的胜读不能太深,循环次数不能太多,不然效率很低,如果能够使用循环就尽量使用循环

        long rs = func(7);
        System.out.println(rs);
    
    }
    public static long func(int n){
        if(n == 1 || n == 2) return 1;
        return func(n - 1) + func(n - 2);
    }

     使用递归遍历某个目录下的所有的文件和目录

    1. public static void main(String[] args) {
    2. func(new File("D:/java/a"));
    3. }
    4. public static void func(File path){
    5. if (path.isFile()){//是文件的话
    6. System.out.println("因为你只是一个文件:不是目录给你返回->"+path.getName());
    7. }else{//是目录的话
    8. System.out.println("文件夹:"+path.getName());
    9. File[] files = path.listFiles();//得到所有的子文件,然后开始遍历
    10. for (File file : files) {
    11. /*if(file.isFile()){
    12. System.out.println("因为你只是一个文件:不是目录给你返回->"+path.getName());
    13. }else{
    14. File[] files1 = path.listFiles();
    15. }*/
    16. //调用自己即可
    17. func(file);
    18. }
    19. }
    20. }

  • 相关阅读:
    tk跨境电商好做吗?有什么技巧吗?
    洛谷 P2870 [USACO07DEC]Best Cow Line G(后缀数组)
    Linux复习-安装与熟悉环境(一)
    实验六:Android的网络编程基础
    初识href超链接
    【Java面试】Zookeeper如何实现Leader选举
    shiro-第一篇-基本介绍及使用
    Selenium+Pytest自动化测试框架
    Mysql 如何模糊匹配后匹配优化
    Java小游戏之——贪吃蛇
  • 原文地址:https://blog.csdn.net/weixin_53415999/article/details/133470807