美文网首页java基础
java基础——File类

java基础——File类

作者: 东方舵手 | 来源:发表于2018-05-15 09:58 被阅读0次

    File类

    • File类用来操作文件路径或文件夹路径,将文件和文件夹路径封装成对象,以提供更多的方法和属性来操作这些对象
    • File类不属于流对象,不能读写文件,但是可以作为参数传递给流对象的构造方法

    File类中的静态常量

    1. static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串分号 ;
    2. static char pathSeparatorChar 与系统相关的路径分隔符 ;
    3. static String separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串 \
    4. static char separatorChar 与系统相关的默认名称分隔符 \
    public class MyTest {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            System.err.println(File.pathSeparator);
            System.err.println(File.pathSeparatorChar);
            System.err.println(File.separator);
            System.err.println(File.separatorChar);
        }
    }
     输出结果:
                ;
                ;
                \
                \
    

    构造方法

    File(File parent, String child):传入一个父级路径和子级路径
    File(String pathname):将一个字符串路径封装成File对象
    File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File实例。
    File(URI uri):通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。

    public class MyTest {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            //File(String pathname) :将指定的路径名转换成一个File对象
            File f1 = new File("D:\\新建文件夹\\科幻小说.txt");
            
            ////File(String parent, String child) : 根据指定的父路径和文件路径创建File对象
            File f2 = new File("D:\\新建文件夹\\科幻小说.txt");
                
            //File(File parent, String child) :根据指定的父路径对象和文件路径创建File对象
            //方式一
            File f3 = new File("D:\\新建文件夹");
            File f31 = new File(f3,"科幻小说.txt");
            //方式二
            File f4 = new File(new File("D:\\新建文件夹"),"科幻小说.txt");
        }
    }
    

    File类创建和删除功能

    boolean createNewFile():指定路径不存在该文件时时创建文件,返回true,否则返回false
    boolean mkdir():当指定的单级文件夹不存在时创建文件夹并返回true,否则返回false
    boolean mkdirs():当指定的多级文件夹某一级文件夹不存在时,创建多级文件夹并返回true,否则返回false
    boolean delete():删除文件或者删除单级文件夹(文件夹必须为空才能删除)

    /*
     *  创建功能
     *      boolean createNewFile()  
     *      boolean mkdir()  
     *      boolean mkdirs()  
     *  删除功能
     *      boolean delete() 
     * 
     *  绝对路径:固定不可改变的路径,以盘符开头
     *  相对路径:相对某个参照物,不能以盘符开头
     *          在eclipse中相对路径相对应当前项目的根目录
     *  
     *  
     *  注意:删除一个文件夹,这个文件夹下面不能有其他的文件和文件夹
    
     */
    public class FileDemo2 {
        public static void main(String[] args) throws IOException {
              File f = new File("d:\\a\\b.txt");//绝对路径
              File f2 = new File("a.txt");//相对路径
            
             //boolean createNewFile() : 当指定文件不存在时创建文件并返回true,否则返回false
             System.out.println(f2.createNewFile());
            
             
            //boolean mkdir()   : 当指定文件夹不存在时创建文件夹并返回true,否则返回false
            File f3 = new File("b");
            System.out.println(f3.mkdir());
            
            //boolean mkdirs() : 创建指定文件夹,当文件夹所在的目录不存在,则顺道一块创建了
            File f4 = new File("c\\d\\e");
            System.out.println(f4.mkdir());
            System.out.println(f4.mkdirs());
            
            File f5 = new File("c.txt");
            System.out.println(f5.mkdir());
            
            //boolean delete() :当指定的文件或文件夹存在时删除文件或者文件夹 并返回true,否则返回false
            System.out.println(f2.delete());
            System.out.println(f3.delete());
    
            File f6 = new File("c");
            System.out.println(f6.delete());
            
        }
    }
    

    File 类的判断功能

    boolean exists(): 判断指定路径的文件或文件夹是否存在
    boolean isAbsolute(): 判断当前路路径是否是绝对路径
    boolean isDirectory(): 判断当前的目录是否存在
    boolean isFile(): 判断当前路径是否是一个文件
    boolean isHidden(): 判断当前路径是否是隐藏文件

    /*
     *  判断功能
     *      boolean exists()  
     *      boolean isAbsolute()  
     *      boolean isDirectory() 
            boolean isFile()  
            boolean isHidden() 
     */
    public class FileDemo3 {
        public static void main(String[] args) throws IOException {
            //method();
            //method2();
            //method3();
            method4();
        }
    
        private static void method4() {
            File f = new File("d:\\a\\b.txt");
            //boolean isHidden() :判断File对象指向的路径是否有隐藏属性,如果隐藏了则返回true,否则返回false
            
            System.out.println(f.isHidden());
        }
    
        private static void method3() {
            File f = new File("a.txt");
            File f2 = new File("b");
            //boolean isDirectory() :判断File对象指向的路径是否是文件夹,如果是则返回true,否则返回false
            //boolean isFile()  : 判断File对象指向的路径是否是文件,如果是则返回true,否则返回false
            
            //System.out.println(f.isDirectory());
            //System.out.println(f2.isDirectory());
            
            System.out.println(f.isFile());
            System.out.println(f2.isFile());
        }
    
        private static void method2() {
            //File f = new File("a.txt");
            File f2 = new File("d:\\a\b.txt");
            
            //boolean isAbsolute() :判断File对象指向的路径是否是绝对路径,如果是绝对路径则返回true,否则返回false
            System.out.println(f2.isAbsolute());
        }
    
        private static void method() {
            File f = new File("a.txt");
            //f.createNewFile();
            
            //boolean exists() : 判断文件或者文件夹是否存在,如果存在则返回true,否则返回false
            System.out.println(f.exists());
        }
    }
    

    File 类的获取功能和修改名字功能

    File getAbsoluteFile():获取文件的绝对路径,返回File对象
    String getAbsolutePath():获取文件的绝对路径,返回路径的字符串
    String getParent():获取当前路径的父级路径,以字符串形式返回该父级路径
    File getParentFile():获取当前路径的父级路径,以字File对象形式返回该父级路径
    String getName():获取文件或文件夹的名称
    String getPath():获取File对象中封装的路径
    long lastModified():以毫秒值返回最后修改时间
    long length():返回文件的字节数
    boolean renameTo(File dest): 将当前File对象所指向的路径 修改为 指定File所指向的路径

    /*
     *  获取功能
            File getAbsoluteFile()  
     *      String getAbsolutePath() 
     *      String getParent()  
     *      File getParentFile() 
     *      String getName() 
     *      String getPath()  
            long lastModified() 
            long length() 
        修改功能:
            boolean renameTo(File dest)
     */
    public class MyTest {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            File f = new File("d:/a/b");//创建文件夹
            f.mkdirs();
            File f2 = new File(f,"c.txt");//在文件夹下创建c.txt文件
            f2.createNewFile();
            
            //File getAbsoluteFile():获取文件的绝对路径,返回File对象
            File absoluteFile = f2.getAbsoluteFile();
            System.err.println(absoluteFile);//输出:d:\a\b\c.txt
            
            //String getAbsolutePath():获取文件的绝对路径,返回路径的字符串
            String absolutePath = f2.getAbsolutePath();
            System.err.println(absolutePath);//输出:d:\a\b\c.txt
            
            //String getParent():获取当前路径的父级路径,以字符串形式返回该父级路径
            String parent = f2.getParent();
            System.err.println(parent);//输出:d:\a\b
            
            //File getParentFile():获取当前路径的父级路径,以字File对象形式返回该父级路径
            File parentFile = f2.getParentFile();
            System.err.println(parentFile);//输出:d:\a\b
            
            //String getName():获取文件或文件夹的名称
            String name = f2.getName();
            System.err.println(name);//输出:c.txt
            
            //String getPath():获取File对象中封装的路径
            String path = f2.getPath();
            System.err.println(path);//输出:d:\a\b\c.txt
            
            //long lastModified():以毫秒值返回最后修改时间
            long lastModified = f2.lastModified();
            Date date = new Date(lastModified);
            System.err.println(date.toLocaleString());//输出:2018-5-14 16:49:18
            
            //long length():返回文件的字节数
            long length = f2.length();
            System.err.println(length);//输出:0
            
            File fnew = new File("cv.txt");
            boolean renameTo = f2.renameTo(fnew);
            System.err.println(renameTo);//输出:true
            
        }
    }
    

    File 类的其他获取功能

    String[] list():以字符串数组的形式返回当前路径下所有的文件和文件夹的名称
    File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称
    static File[] listRoots():获取计算机中所有的盘符

    public class MyTest {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            File f = new File("d:/a/b");//创建文件夹
            f.mkdirs();
            File f2 = new File(f,"c.txt");//在文件夹下创建c.txt文件
            f2.createNewFile();
            
            //static File[] listRoots() :  返回的是所有盘符
            File[] listRoots = File.listRoots();
            for (File file : listRoots) {
                System.err.println(file);
            }
            /*
                C:\
                D:\
                E:\
             */
            
            
            //File对象必须是封装的文件夹路径 否则会报空指针异常
            String[] list = f.list();
            for (String string : list) {
                System.err.println(string);
            }
            /*
                c.txt
                h.txt
                y.txt
                新建文件夹
                新建文件夹 (2)
             */
            
            
            //File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称
            //File对象必须是封装的文件夹路径 否则会报空指针异常
            File[] listFiles = f.listFiles();
            for (File file : listFiles) {
                System.err.println(file);
            }
            /*
                d:\a\b\c.txt
                d:\a\b\h.txt
                d:\a\b\y.txt
                d:\a\b\新建文件夹
                d:\a\b\新建文件夹 (2)
             */
        }
    }
    

    案例代码一

    输出制定目录下所有的java文件名(包含子目录)

    public class MyTest {
        public static void main(String[] args) {
            File f = new File("src");
            method2(f);
        }
        /**
         * 输出制定目录下所有的java文件名(包含子目录)
         */
        public static void method(File file){
            //判断是否是文件夹,是就遍历得到文件夹里所有的File的所有对象
            if(file.isDirectory()){
                File[] files = file.listFiles();
                for (File f : files) {
                    if (f.isDirectory()){
                        method(f);
                    }else if(f.isFile()){
                        //输出打印java的文件
                        if (f.getName().endsWith(".java"))
                            System.out.println(f.getName());
                    }
                }
            }
        }
        /**
         * 输出指定目录下的所有java文件名(不包含子目录)
         */
        public static void method2(File file){
            if (file.isDirectory()){
                File[] files = file.listFiles();
                for (File f : files) {
                    if (f.isFile()){
                        if (f.getName().endsWith(".java")){
                            System.out.println(f.getName());
                        }
                    }
                }
            }
        }
    }
    

    案例代码二

    删除指定的目录(包含子目录)

    public class MyTest {
        public static void main(String[] args) {
            /**
             * 删除指定的目录(包含子目录)
             * 注意:如果要删除一个目录,则需要先删除这个目录下的所有子文件和子目录
             */
            File f = new File("src/controller");
            method(f);
        }
    
        public static void method(File file){
            if (file.isDirectory()){
                //干掉自己所有的子文件和子目录
                //获取所有的子文件和子目录
                File[] files = file.listFiles();
                for (File f : files) {
                    if (f.isFile()){
                        //是文件直接删除
                        f.delete();
                    }else if(f.isDirectory()){
                        //继续查看是否还有文件和子目录
                        method(f);
                    }
                }
            }
            //最后删除当前方法里的File对象
            file.delete();
        }
    }
    

    相关文章

      网友评论

        本文标题:java基础——File类

        本文链接:https://www.haomeiwen.com/subject/wwdddftx.html