Java IO流——File类的使用

File类的使用

  • File类的一个对象,代表一个文件或一个文件目录;
  • File类声明在java.io包下;
  • File类中涉及的方法只是关于文件或文件目录的创建、删除、重命名、获取相关信息的方法,不涉及到写入或读取文件内容的操作。文件内容的操作,必须使用IO流来完成;
  • File类的使用常将其实例化对象作为参数传递给流的构造器中。
1.File类的实例化
  • 构造器一:public File(String pathname),pathname:文件的路径

  • 构造器二:public File(String parent, String child)

  • 构造器三:public File(File parent, String child)

    @Test
    public void test1(){
        //构造器一:public File(String pathname)
        var file1 = new File("Hello.txt");//相对于当前包下的文件
        var file2 = new File("C:\\Users\\ASUS\\IdeaProjects\\Ther\\src\\JavaSE\\IO/Hello.txt");
    
        System.out.println(file1);
        System.out.println(file2);
    
        //构造器二:public File(String parent, String child)
        var file3 = new File("C:\\Users\\ASUS\\IdeaProjects","Ther");
        System.out.println(file3);
    
        //构造器三:public File(File parent, String child)
        var file4 = new File(file3,"src\\JavaSE\\IO/Hello.txt");
        System.out.println(file4);
    }
    
相对路径与绝对路径

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

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

分隔符

路径分隔符和系统有关,在windows和Dos系统下默认使用“\”来表示,在UNIX和URL中使用“/”来表示(实际上在windows下用/也不会报错),java程序支持跨平台运行,因此路径分隔符要慎用。为了解决在不同系统下分隔符不同的隐患,File类提供了一个常量:public static final String separator根据操作系统,动态的提供分隔符。

2.File类的常用方法
方法名说明
public String getAbsolutePath()获取绝对路径
public String getPath()获取相对路径
public String getName()获取文件名
File public File getParentFile()获取父级文件路径并返回FIle类型
public long length()获取文件内容长度
public long lastModified()获取文件的最后一次修改时间,返回一个时间戳
public boolean renameTo(File dest)重命名
public String[] list()返回当前文件目录下的所有文件名
public File[] listFiles()返回当前文件目录下的所有文件路径
public boolean exists()判断是否存在
public boolean isDirectory()判断是否是一个文件目录
public boolean isFile()判断是否是一个文件
public boolean canRead()文件是否可读
public boolean canWrite()文件是否可写
public boolean isHidden()文件是否隐藏
public boolean createNewFile()如果该文件不存在创建一个新的文件(路径中上一级文件目录存在)
public boolean delete()删除文件或文件目录(删除文件目录要求文件目录中不能有文件或文件目录)
public boolean mkdirs()创建多级文件目录

代码示例

@Test
public void test2(){
    File file2 = new File("Hello.txt");
    File file1 = new File("C:\\Users\\ASUS\\IdeaProjects\\Ther\\src\\JavaSE\\IO\\Hello.txt");

    //获取绝对路径 public String getAbsolutePath()
    System.out.println(file1.getAbsolutePath());
    //获取相对路径  public String getPath()
    System.out.println(file1.getPath());
    //获取文件名 public String getName()
    System.out.println(file1.getName());
    //获取父级文件路径并返回File public File getParentFile()
    System.out.println(file1.getParentFile());
    //获取文件内容长度 public long length()
    System.out.println(file1.length());
    //文件的最后一次修改时间 返回的是一个时间戳 public long lastModified()
    System.out.println(new Date(file1.lastModified()));
    //public boolean renameTo(File dest):重命名File成功返回true
    System.out.println(file1.renameTo(new File("C:\\Users\\ASUS\\IdeaProjects\\Ther\\src\\JavaSE\\IO\\Hello.txt")));

    System.out.println("----------------");
    System.out.println(file2.getAbsolutePath());
    System.out.println(file2.getPath());
    System.out.println(file2.getName());
    //file2中文件Hello.txt不存在,所以父级路径为null
    System.out.println(file2.getParentFile());
    System.out.println(file2.length());
    System.out.println(new Date(file2.lastModified()));
}

/*输出:
    C:\Users\ASUS\IdeaProjects\Ther\src\JavaSE\IO\Hello.txt
    C:\Users\ASUS\IdeaProjects\Ther\src\JavaSE\IO\Hello.txt
    Hello.txt
    C:\Users\ASUS\IdeaProjects\Ther\src\JavaSE\IO
    5
    Mon Jul 26 22:31:01 CST 2021
    true
    ----------------
    C:\Users\ASUS\IdeaProjects\Ther\Hello.txt
    Hello.txt
    Hello.txt
    null
    0
    Thu Jan 01 08:00:00 CST 1970
 */

@Test
public void test3(){
    File file = new File("C:\\Users\\ASUS\\IdeaProjects\\Ther");
    //public String[] list():获取当前目录下的所有文件名
    String [] list = file.list();
    for (String i:
         list) {
        System.out.println(i);
    }

    //public File[] listFiles():获取当前目录下的所有文件返回类型为File
    File [] files = file.listFiles();
    for (File f:
         files) {
        System.out.println(f);
    }
}

//一些常用的判断方法
@Test
public void test4(){
    File file = new File("C:\\Users\\ASUS\\IdeaProjects\\Ther\\src\\JavaSE\\IO\\Hello.txt");

    //public boolean exists():判断是否存在
    System.out.println(file.exists());
    //public boolean isDirectory():判断该File对象是否是一个文件目录
    System.out.println(file.isDirectory());
    //public boolean isFile():判断该File对象是否是一个文件
    System.out.println(file.isFile());
    //public boolean canRead():判断是否可读
    System.out.println(file.canRead());
    //public boolean canWrite():判断是否可写
    System.out.println(file.canWrite());
    //public boolean isHidden():判断是否隐藏
    System.out.println(file.isHidden());


    /*输出:
        true
        false
        true
        true
        true
        false
         */
}

//创建,删除文件或文件目录
@Test
public void test5() throws IOException{
    File file1 = new File("Hi.txt");
    if(!file1.exists()){
        //public boolean createNewFile():文件创建的方法,创建该File文件
        file1.createNewFile();
        System.out.println("文件创建成功 ");
    }else {
        //public boolean delete():文件删除的方法
        file1.delete();
        System.out.println("文件删除成功 ");
    }

    //父级目录存在
    File file2 = new File("C:\\Users\\ASUS\\IdeaProjects\\Ther\\Hello");
    if(!file2.exists()){
        //public boolean mkdir():文件目录创建的方法
        //返回判断是否创建成功,创建失败有两种情况:1.该文件目录已经存在,2.文件的父级目录不存在
        Boolean flag = file2.mkdir();
        if (!flag){
            file2.mkdirs();
        }
        System.out.println("文件目录创建成功 ");

    }else {
        //删除文件目录要求文件目录不能有文件
        file2.delete();
    }

    //父级目录补存在
    File file3 = new File("C:\\Users\\ASUS\\IdeaProjects\\Ther\\Hello\\Hi");
    if(!file3.exists()){
        Boolean flag = file3.mkdir();
        if (!flag){
            //public boolean mkdirs():创建多级文件目录的方法
            file3.mkdirs();
        }
        System.out.println("文件目录创建成功 ");

    }else {
        file3.delete();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值