Java中的File类

File类的使用

  • java.io.File类: 文件和文件目录路径的抽象表示形式,与平台无关
  • File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
  • 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
  • File对象可以作为参数传递给流的构造器

常用构造器

  • public File(String pathname)

    以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。

    绝对路径: 包含盘符在内的文件或文件目录的路径

    相对路径: 相较于某个路径下,指明的路径

  • public File(String parent,String child)

    以parent为父路径, child为子路径创建File对象。

  • public File(File parent,String child) 根据一个父File对象和子文件路径创建File对象

    路径分隔符:windows: \\ ;unix: \

举例:

public static void main(String[] args) {
    // 构造器1
    File file1 = new File("hello.txt");//相当于当前的工程
    File file2 = new File("D:\\Java\\java_demo\\day8\\he.txt");
	// main
    
    // 函数中相当于当前的过程
    // 其他函数相当于当前module的目录
    System.out.println(file1);
    System.out.println(file2);
    //hello.txt
    //D:\Java\java_demo\day8\he.txt

    // 构造器2
    File file3 = new File("D:\\Java\\java_demo\\day8","JavaDemo");
    System.out.println(file3);

    // 构造器3
    File file4 = new File(file3,"hi.txt");
    System.out.println(file4);
    //D:\Java\java_demo\day8\JavaDemo
    //D:\Java\java_demo\day8\JavaDemo\hi.txt
}

常用方法

File类的获取功能

  • public String getAbsolutePath(): 获取绝对路径
  • public String getPath() : 获取路径
  • public String getName() : 获取名称
  • public String getParent(): 获取上层文件目录路径。 若无, 返回null
  • public long length() : 获取文件长度( 即:字节数) 。 不能获取目录的长度。
  • public long lastModified() : 获取最后一次的修改时间, 毫秒值
  • public String[] list() : 获取指定目录下的所有文件或者文件目录的名称数组
  • public File[] listFiles() : 获取指定目录下的所有文件或者文件目录的File数组
    public static void test2(){
        File file1 = new File("hello.txt");//相当于当前的module
        File file2 = new File("D:\\Java\\java_demo\\day8\\hello.txt");

        System.out.println(file1.getAbsolutePath());
        System.out.println(file1.getPath());
        System.out.println(file1.getName());
        System.out.println(file1.getParent());
        System.out.println(file1.length());
        System.out.println(file1.lastModified());

        System.out.println("********");

        System.out.println(file2.getAbsolutePath());
        System.out.println(file2.getPath());
        System.out.println(file2.getName());
        System.out.println(file2.getParent());
        System.out.println(file2.length());
        System.out.println(new Date(file2.lastModified()));
    }
    /*
    D:\Java\java_demo\hello.txt
    hello.txt
    hello.txt
    null
    0
    0
    ********
    D:\Java\java_demo\day8\hello.txt
    D:\Java\java_demo\day8\hello.txt
    hello.txt
    D:\Java\java_demo\day8
    10
    Thu May 16 20:51:39 CST 2019
    * */
    public static void test3(){
        File file1 = new File("E:\\java资料\\尚硅谷");

        String[] list = file1.list();// 获取指定目录下的所有文件或者文件目录的名称数组
        for(String s:list){
            System.out.println(s);
        }
        System.out.println();
        File[] files = file1.listFiles()// 获取指定目录下的所有文件或者文件目录的File数组
        for(File f: files){
            System.out.println(f);
        }
    }
/*
* 1_课件
day18_IDEA的使用与多线程
day19_多线程
day20_常用类
day21_常用类
day22_枚举类与注解
day23_集合
day24_集合
day25_泛型与File
day26_IO流
day27_IO流与网络编程
day28_反射
day29_动态代理与Java8新特性
day30_Java9&10&11新特性
尚硅谷_宋红康_第12章_泛型
尚硅谷_宋红康_第13章_IO流
尚硅谷_宋红康_第14章_网络编程
尚硅谷_宋红康_第15章_Java反射机制

E:\java资料\尚硅谷\1_课件
E:\java资料\尚硅谷\day18_IDEA的使用与多线程
E:\java资料\尚硅谷\day19_多线程
E:\java资料\尚硅谷\day20_常用类
E:\java资料\尚硅谷\day21_常用类
E:\java资料\尚硅谷\day22_枚举类与注解
E:\java资料\尚硅谷\day23_集合
E:\java资料\尚硅谷\day24_集合
E:\java资料\尚硅谷\day25_泛型与File
E:\java资料\尚硅谷\day26_IO流
E:\java资料\尚硅谷\day27_IO流与网络编程
E:\java资料\尚硅谷\day28_反射
E:\java资料\尚硅谷\day29_动态代理与Java8新特性
E:\java资料\尚硅谷\day30_Java9&10&11新特性
E:\java资料\尚硅谷\尚硅谷_宋红康_第12章_泛型
E:\java资料\尚硅谷\尚硅谷_宋红康_第13章_IO流
E:\java资料\尚硅谷\尚硅谷_宋红康_第14章_网络编程
E:\java资料\尚硅谷\尚硅谷_宋红康_第15章_Java反射机制
* 
* */

File类的重命名功能

  • public boolean renameTo(File dest):把文件重命名为指定的文件路径

比如: file1.renameTo(file2)为例:要想保证返回true,需要file1在硬盘中是存在的,且fiile2不能在硬盘中存在;

public static void test4(){
    File file1 = new File("hello.txt");// 存在
    File file2 = new File("E:\\java资料\\尚硅谷\\hi.txt");// 不存在
    boolean renameTo = file1.renameTo(file2);// true
    System.out.println(renameTo);
}

File类的判断功能

  • public boolean isDirectory(): 判断是否是文件目录
  • public boolean isFile() : 判断是否是文件
  • public boolean exists() : 判断是否存在
  • public boolean canRead() : 判断是否可读
  • public boolean canWrite() : 判断是否可写
  • public boolean isHidden() : 判断是否隐藏
    public static void test5(){
        File file1 = new File("hello.txt");
        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        System.out.println(file1.canRead());
        System.out.println(file1.canWrite());
        System.out.println(file1.isHidden());


        File file2 = new File("E:\\java资料\\尚硅谷");
        System.out.println(file2.isDirectory());
        System.out.println(file2.isFile());
        System.out.println(file2.exists());
        System.out.println(file2.canRead());
        System.out.println(file2.canWrite());
        System.out.println(file2.isHidden());

//        true
//        false
//        true
//        true
//        true
//        false
    }

File类的创建功能

  • public boolean createNewFile() : 创建文件。 若文件存在, 则不创建, 返回false
  • public boolean mkdir() : 创建文件目录。 如果此文件目录存在, 就不创建了。如果此文件目录的上层目录不存在, 也不创建。
  • public boolean mkdirs() : 创建文件目录。 如果上层文件目录不存在, 一并创建。注意事项:如果你创建文件或者文件目录没有写盘符路径, 那么, 默认在项目路径下。
public static void test7(){
    File file1 = new File("D:\\iotest\\io4\\io9");
    boolean mkdir = file1.mkdir();
    if(mkdir){
        System.out.println("创建成功1");
    }

    File file2 = new File("D:\\iotest\\io1\\io2");
    boolean mkdir1 = file1.mkdirs();
    if(mkdir1){
        System.out.println("创建成功2");
    }
}

File类的删除功能

  • public boolean delete(): 删除文件或者文件夹

删除注意事项:
Java中的删除不走回收站。
要删除一个文件目录, 请注意该文件目录内不能包含文件或者文件目录

public static void test6() throws IOException {
    File file1 = new File("hello.txt");
    if(!file1.exists()){
        file1.createNewFile();
        System.out.println("创建成功");
    }else{
        file1.delete();
        System.out.println("删除成功");
    }
}
posted @ 2019-09-04 22:09  伊万夫斯基  阅读(265)  评论(0编辑  收藏  举报