美文网首页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类

    File类 File类用来操作文件路径或文件夹路径,将文件和文件夹路径封装成对象,以提供更多的方法和属性来操作这些...

  • Java 基础 40 File类

    1.1 File类的概述和构造方法 1.1.1 File类的概述   File:文件和目录路径名的抽象表示形式  ...

  • Java入门系列-22-IO流

    File类的使用 Java程序如何访问文件?通过 java.io.File 类 使用File类需要先创建文件对象 ...

  • 系统学习 Java IO (三)----File

    目录:系统学习 Java IO---- 目录,概览 Java IO API 中的 File 类可以访问基础文件系统...

  • Chapter 9 . Java IO

    阅读原文 Chapter 9 . Java IO 9.1 IO---File 类 java.io.File类:文件...

  • Java I/O二.File常用方法

    本文简单罗列 File类构造方法 File类常用方法 在Java语言的java.io包中,由File类提供了描述文...

  • java-IO输入输出流

    一.java.io.File类 java.io.File类用于表示文件/目录 File只用于表示文件的信息(名称,...

  • java 泛型基础(详细例子)

    Java基础之一反射 动态加载类的方法 editPlus配合cmd命令行调用 file-new-java,保存Ja...

  • 第十五章文件与流

    JAVA程序如何访问文件属性 java.io.File类 File类访问文件属性 java中的文件及目录处理类 1...

  • Java-I/O学习(4)

    Java-I/O学习(4) File Java IO 的File类可以帮助你访问底层的文件系统,使用File类你可...

网友评论

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

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