zoukankan      html  css  js  c++  java
  • File类、递归

    File类、递归

    1.1File类概述

    java.io.File表示文件和目录路径名的抽象类。可以对文件和文件夹进行创建删除、获取、判断、遍历等功能。

    1.2路径文件分割符,相对路径绝度路径

    1.2.1路径文件分割符

    * 在编程的过程中,最好不要写死
    * windows: 文件分隔符(编程中要用转义字符"\") 路径分隔符;
    * linux: 文件分隔符/ 路径分隔符:

    
    
        public static void main(String[] args) {
    
            //源码中:public static final String separator = "" + separatorChar;
            //文件分隔符
            String separator = File.separator;
            System.out.println("separator = " + separator);
    
            //源码中:public static final String pathSeparator = "" + pathSeparatorChar;
            //路径分隔符
            String pathSeparator = File.pathSeparator;
            System.out.println("pathSeparator = " + pathSeparator);
    
            //执行结果:
            //separator = 
            //pathSeparator = ;
    
        }
    

      

     1.2.1绝对路径和相对路径

    *  绝度路径:从盘符开始的路径,是完成的路径。
    *
    * 相对路径:化简的路径,以当前项目根目录作为参考,开发中经常使用
    * D:JavaSEdemo02File.txt D:JavaSE项目根目录 demo02File.txt相对路径
    *
    * windows下:文件和目录路径是不区分大小写!!!

    
    
        /**
         * 路径知识点
         */
        private static void show01() {
            File file = new File("demo02File.txt");
            System.out.println(file.getAbsoluteFile());
    
            File file02 = new File("D:\demo02File.txt");
            System.out.println(file02.getAbsoluteFile());
    
            //结果:
            // D:JavaSEdemo02File.txt
            //D:demo02File.txt
        }

    1.3File类的构造方法

    *  java.io.File类是文件和目录路径的抽象表示,可以对文件和目录路径进行
    * 获取、判断、创建删除、遍历等操作
    *
    * File对象表示硬盘上真是存在的一个文件或者目录路径名!!!
    * 该目录下是否存在文件或者文件夹,不影响File对象的创建!!!
    *
    * 构造方法:
    * 构造方法一:通过文件或目录路径名字符串创建File对象
    * public File(String pathname);
    * String pathname:字符串的路径名称
    * 路径可以是以文件结尾/文件夹结尾,相对路径/绝对路径,存在/不存在
    *
    * 创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况!!!
    *
    * 构造方法二:通过父路径名 和 子路径名 创建File对象
    * public File(String parent,String child);
    *
    * 构造方法三:通过抽象父路径和子路径名创建创建File对象
    * public File(File parent, String child);
        /**
         * 构造方法
         */
        private static void show02() {
            //构造方法一:通过文件或目录路径名字符串创建File对象
            File file = new File("demo03File.txt");
            System.out.println(file);
    
            //构造方法二:通过父路径名 和 子路径名 创建File对象
            File file02 = new File("D:\b","demo03File02.txt");
            System.out.println(file02);
    
            //D:\bbb是不存在的文件夹,但是不影响File对象的创建。
            File file03 = new File("D:\bbb","demo03File02.txt");
            System.out.println(file03);
    
            //构造方法三:通过抽象父路径和子路径名创建创建File对象
            File parentPath = new File("D:\");
            File file04 = new File(parentPath, "demo04File02.txt2");
            System.out.println(file04);
        }

    1.4File类的获取功能

    * File类的获取功能
    *
    * public String getAbsolutePath();
    *
    * public String getPath();
    * File类重写了toString(),源码如下:
    * public String toString() {
    * return getPath();
    * }
    *
    * public String getName();
    *
    * public long length();
    * 获取文件的字节长度,文件夹是没有长度的,返回的0!!
        public static void main(String[] args) {
            File file = new File("D:\JavaSE\demo04File.txt");
    
    
            //获取文件或目录路径名的绝对路径
            File absoluteFile = file.getAbsoluteFile();
            System.out.println("absoluteFile = " + absoluteFile);
    
            //获取构造方法中参数对应的字符串
            String path = file.getPath();
            System.out.println("path = " + path);
            System.out.println("file = " + file);
    
            //获取路径结尾的文件名或者文件夹
            String name = file.getName();
            System.out.println("name = " + name);
    
            //获取文件的字节长度,文件夹是没有长度的,返回的0!!!
            long length = file.length();
            System.out.println("length = " + length);
    
    //        result:
    //        absoluteFile = D:JavaSEdemo04File.txt
    //                path = D:JavaSEdemo04File.txt
    //                file = D:JavaSEdemo04File.txt   File类重写了toString方法,里面调用了getPath()!!!
    //                name = demo04File.txt
    //        length = 12       utf-8中一个汉字三个字节!!!
        }

    1.5File类的判断功能

    * File类的判断功能:
    *
    * public boolean isExists(); File对象表示的文件或者文件夹是否存在
    * public boolean isFile(); File对象是文件吗
    * public boolean isDirectory(); File对象是文件夹吗
    *
    * windows中只有文件和文件夹,isFile和sDirectory互斥!!!
    * 前提是先判断file是否存在,才有必要在判断是文件还是文件夹!!!
            File file = new File("demo04File.txt");
            //windows中只有文件和文件夹,isFile和sDirectory互斥
            //前提是先判断file是否存在,才有必要在判断是文件还是文件夹
            if (file.exists()){
                System.out.println(file.getName()+"(file or not):"+file.isFile());
                System.out.println(file.getName()+"(directory or not):"+file.isDirectory());
            }
    
            File file02 = new File("D:\JavaSE");
            if (file02.exists()){
                System.out.println(file02.getName()+"(file or not):"+file02.isFile());
                System.out.println(file02.getName()+"(directory or not):"+file02.isDirectory());
            }

    1.6File类的创建删除功能

    * File对象的创建和删除功能:
    * public boolean createNewFile();
    * 只能创建文件,并且当且仅当文件不存在的时候,创建一个新的文件,返回true,否则返回false
    * 需要自己处理异常,file对象表示的目录路径不存在时,抛出异常!!!java.io.IOException
    *
    * public boolean mkdir();
    * 创建单个文件夹,成功返回true,失败返回false(文件夹存在的时候,或者路径不存在)
    *
    * public boolean mkdirs();
    * 创建多级目录,成功返回true,失败返回false(文件夹存在时)
        /**
         * 删除
         */
        private static void show03() {
            File file = new File("D:\Hello.txt");
            System.out.println(file.delete());      //true 删除成功
    
            File file1 = new File("D:\love");
            System.out.println(file1.delete());    //删除失败,只有文件夹是空的,才能删除成功
                                                    //构造方法的路径不存在,也会返回false
        }
    
        /**
         * 创建文件夹
         * 文件夹存在时候,不会再次创建返回false
         * 对于
         * mkdir:参数路径不存在,创建会失败,返回false
         *
         * 其他情况,都能创建文件夹成功,返回true
         */
        private static void show02() {
            File file = new File("D:\Hello");
            //创建单个文件夹
            System.out.println(file.mkdir());
    
            File file1 = new File("D:\love\tomorrow");
            //创建多个文件夹
            System.out.println(file1.mkdirs());
    
            //mkdir,mkdirs只能创建文件夹,并且mkirs也可以创建单个文件夹
            File file2 = new File("D:\Hello.txt");
            System.out.println(file2.mkdirs());
        }
    
        /**
         * 文件的创建
         * @throws IOException
         */
        private static void show01() throws IOException {
    
            File file = new File("demo05File.txt");
            boolean newFile = file.createNewFile();
    
            //第一次运行,没有文件,创建后返回true.第二次运行有文件,不创建,返回false
            System.out.println("newFile create ok ? " + newFile);
    
            File directoryNoNoNo = new File("iamDirectoryNoNoNo");
            if(!directoryNoNoNo.exists()){
                directoryNoNoNo.createNewFile();
            }
            System.out.println("我仍然是一个文件哦"+directoryNoNoNo.getName());
    
    //        File file = new File("D:\tt\demo05File.txt");     //路径不存在,抛出java.io.IOException
    //        boolean newFile = file.createNewFile();                     //编译时异常,需要自己处理
        }
    

      

    1.7文件夹的遍历

    * File类的遍历目录(文件夹)功能
    * public String[] list();
    * public File[] listFiles();
    *
    * 返回目录路径下的所有子文件和文件夹,
    * 第一个方法返回的是子文件和文件夹的字符串,封装在String[]数组中
    * 第二个方法返回的是子文件和文件夹的File对象,封装在File[]数组中
    *
    * 如果构造方法中的目录路径不存在,或者是一个文件,那么出现空指针异常
        public static void main(String[] args) {
            //  D:JavaSE        08FileAndRecursion
            //File file = new File("D:\JavaSE\notExists");  //java.lang.NullPointerException
            File file = new File("D:\JavaSE\");     //打印项目目录内容
            String[] list = file.list();
    
            for (String str :
                    list) {
                System.out.println(str);
            }
    
            System.out.println("------------------------");
    
            File[] files = file.listFiles();
            for (File dirFile: files ) {
                System.out.println(dirFile.getName());
            }
    
        }
    

      

  • 相关阅读:
    C#读取Excel日期时间
    软件需求3个层次――业务需求、用户需求和功能需求
    软件开发中的基线
    软件开发过程(CMMI/RUP/XP/MSF)是与非
    第1章项目初始.pdf
    计算机鼓轮
    概念模型,逻辑模型,物理模型
    第0章项目管理概述.pdf
    C#中提供的精准测试程序运行时间的类Stopwatch
    Installing and configuring OpenSSH with pam_ldap for RedHat Enterprise Linux3
  • 原文地址:https://www.cnblogs.com/juna3066/p/10617895.html
Copyright © 2011-2022 走看看