Java第二十课_File

发布时间 2023-12-29 12:30:51作者: 张心野

1.File

  • File常用函数

    
        public static void main(String[] args) throws IOException {
            // 相对路径 : IO流默认目录 : 当前项目工程开始自己算
            // 绝对路径 : 带盘符的路径 :
            // 网络路径 : https://img2.baidu.com/it/u=3164322677,862193441&fm=253&fmt=auto&app=120&f=GIF?w=569&h=362
            // File : 文件(带后缀的)和目录(文件夹)
    
            // 静态字段 :
            System.out.println("File.pathSeparator = " + File.pathSeparator);
            System.out.println("File.pathSeparatorChar = " + File.pathSeparatorChar);
            System.out.println("File.separator = " + File.separator);
            System.out.println("File.separatorChar = " + File.separatorChar);
    
            File file = new File("a.txt");// 和文件建立联系. 和IO流不同, 不存在的文件不会自动新建
            // File file = new File("F:\\IdeaProjects" + File.separatorChar + "JavaBase/a.txt");
    
            // 创建文件
            boolean newFile = file.createNewFile();
            System.out.println("newFile = " + newFile);
    
            System.out.println("file.exists() = " + file.exists());// 判断文件存在吗
            // boolean canExecute() 文件是否可用
            //  boolean canRead()  可读吗
            //  boolean canWrite()  可写吗
            System.out.println("file.canExecute() = " + file.canExecute());
            System.out.println("file.canRead() = " + file.canRead());
            System.out.println("file.canWrite() = " + file.canWrite());
    
            // boolean delete()
            //           删除此抽象路径名表示的文件或目录
            // System.out.println("file.delete() = " + file.delete());
    
            //  boolean equals(Object obj) : 路径
            //           测试此抽象路径名与给定对象是否相等。
            //  File getAbsoluteFile()
            //           返回此抽象路径名的绝对路径名形式。
            //  String getAbsolutePath()
            //           返回此抽象路径名的绝对路径名字符串。
            System.out.println("file.getAbsolutePath() = " + file.getAbsolutePath());
            System.out.println("file.getAbsoluteFile() = " + file.getAbsoluteFile());// 会自动转化成可读懂的格式
    
            //  String getName()
            //           返回由此抽象路径名表示的文件或目录的名称。
            System.out.println("file.getName() = " + file.getName());
            //  String getParent()
            //           返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
            System.out.println("file.getParent() = " + file.getParent());
            //  File getParentFile()
            //           返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
            System.out.println("file.getParentFile() = " + file.getParentFile());
    
            //  boolean isAbsolute()
            //           测试此抽象路径名是否为绝对路径名。
            System.out.println("file.isAbsolute() = " + file.isAbsolute());
            //  boolean isDirectory()
            //           测试此抽象路径名表示的文件是否是一个目录。
            System.out.println("file.isDirectory() = " + file.isDirectory());
            //  boolean isFile()
            //           测试此抽象路径名表示的文件是否是一个标准文件。
            System.out.println("file.isFile() = " + file.isFile());
            //  boolean isHidden()
            //           测试此抽象路径名指定的文件是否是一个隐藏文件。
            System.out.println("file.isHidden() = " + file.isHidden());
            //  long lastModified()
            //           返回此抽象路径名表示的文件最后一次被修改的时间。
            System.out.println("file.lastModified() = " + file.lastModified());
            System.out.println(new SimpleDateFormat("yyyy/MM/dd kk:mm:ss SSS").format(new Date(file.lastModified())));
            //  long length()
            //           返回由此抽象路径名表示的文件的长度。
            System.out.println("file.length = " + file.length());
    
            // boolean mkdir()
            //           创建此抽象路径名指定的目录。
            // new File("F:\\aa\\bb\\cc").mkdir();
            System.out.println("File(\"F:\\\\aa\\\\bb\\\\cc\").mkdirs() = " + new File("F:\\aa\\bb\\cc").mkdirs());
            //  boolean mkdirs()
            //           创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
            //  boolean renameTo(File dest)
            //           重新命名此抽象路径名表示的文件。
            file.renameTo(new File("x.txt"));
        }
    
  • 遍历文件系统根

        public static void main(String[] args) {
            // static File[] listRoots()
            //           列出可用的文件系统根。
            File[] files = File.listRoots();
            Stream<File> stream = Arrays.stream(files);
            stream.forEach(System.out::println);
            System.out.println("------------------------------------");
    
            String[] list = files[files.length-1].list();
            Arrays.stream(list).forEach(System.out::println);
        }
    
  • 递归遍历所有文件

        public static void main(String[] args) {
            // 打印目录树 : 递归
            printAllFile(new File("I:\\"));
        }
    
        public static void printAllFile(File file){
            if (!file.exists()) {// 可能有异常时, 不使用try, 自己编程格式如下
                throw new IllegalArgumentException("文件 " + file.getName() + " 不存在!");
            }
            if (file.isFile()) {
                throw new IllegalArgumentException("文件 " + file.getName() + " 不是目录!");
            }
            File[] files = file.listFiles();
            if (files != null && files.length > 0) {
                Arrays.stream(files).forEach((fileName)->{
                    if (fileName.isFile()) {
                        System.out.println(fileName);
                    } else {
                        printAllFile(fileName);// 递归, 从根目录开始一层层遍历所有文件夹
                    }
                });
            }
        }
    

2.网络

  • import导入同名类

    import java.util.*;// 引入该包下所有的类
    
    /**
     * @author 张晗
     * @create 2023-12-29 13:08
     * @desc
     */
    public class Practice01 {
    
        public static void main(String[] args) {
            // import : 简化书写
            Date date = new Date();
            // 当有两个同名类时, 只能导一个包, 另一个类写全名(util.Date和sql.Date)
            java.sql.Date date1 = new java.sql.Date(0L);
        }
    }
    
  • import导入静态函数

    import java.util.Arrays;
    import static java.util.Arrays.sort;// 引入该类下静态函数
    import static java.util.Arrays.stream;
    import static java.util.Arrays.fill;
    import static java.util.Arrays.*;// 引入该类下所有的静态函数
    
    /**
     * @author 张晗
     * @create 2023-12-29 13:11
     * @desc
     */
    public class Practice02 {
    
        public static void main(String[] args) {
            int[] ints = {};
            sort(ints);
            stream(ints);
            fill(ints, 110);
            copyOf(ints, 10);
            Arrays.toString(ints);
            Arrays.equals(ints, ints);
        }
    }