File——文件

File

File 类是文件和目录路径名的抽象表示形式。这个类提供了与文件系统进行交互的各种方法,例如创建、删除、重命名文件或目录,以及检查文件或目录的状态(如是否存在、是否为目录等)。

File类对象的创建

构造器说明
public File(String pathName)根据文件路径创建文件对象
public File(String parent, String child)根据父路径和子路径名字创建文件对象
public File(File parent, String child)根据父路径对应文件对象和子路径名字创建对象

案例演示

public class FileTest {
    public static void main(String[] args) {
        //public File (String pathName):根据文件路径创建文件对象
        File f1 = new File("F:\\Data\\aaa.txt");
        //OR
        File f2 = new File("F:/Data/aaa.txt");
        //OR
        /*
          File.separator 是 java.io.File 类中的一个静态字段,
          它代表了当前操作系统文件路径的分隔符。在不同的操作系统中,
          文件路径的分隔符是不一样的:在Windows系统中,路径分隔符是反斜杠 \。
          在Unix/Linux系统中,路径分隔符是正斜杠 /。
         */
        String path = "F:" + File.separator + "Data" + File.separator + "aaa.txt";
        File f3 = new File(path);
        //public long length():返回此抽象路径名表示的文件的长度。
        System.out.println(f3.length());

        //以上带盘符的路径称为绝对路径,而相对路径是不带盘符的,默认直接在工程的文件夹下寻找文件
        File f4 = new File ("oop2\\src\\离歌慢饮.txt");
        System.out.println(f4.exists());
        System.out.println(f4.length());
    }
}

斜杠"/“和双反斜杠”\\"都可以表示路径分隔符,但使用反斜杠时需两个反斜杠都写上,不然很可能被系统认为该反斜杠对后面的字符进行转义。除了这两个路径分隔符外,还可使用静态字段File.separator来代表当前系统文件路径的分隔符。

带盘符的文件路径称为绝对路径,而不带盘符的文件路径称为相对路径,通常来说。相对路径的使用频率要远大于绝对路径。

文件和文件夹都可以封装成File对象,File封装的对象只是一个路径名,允许该路径名不存在


File提供的判断文件类型、获取文件信息的方法

方法名说明
public boolean exists()判断当前文件对象对应的文件路径是否存在
public boolean isFile()判断当前文件对象指代的是否是文件
public boolean isDirectory()判断当前文件对象指代的是否是文件夹
public String getName()获取文件的名称(包含后缀)
public long length()获取文件的大小,返回字节数
public long lastModified()获取文件最后的修改时间
public String getPath()获取创建文件对象时所使用的路径
public String getAbsolutePath()获取绝对路径

案例演示

public class FileTest1 {
    public static void main(String[] args) {
        File file = new File("oop2\\src\\离歌慢饮.txt");
        File folder = new File("oop2");
        //public boolean exists()	判断当前文件对象对应的文件路径是否存在
        System.out.println(file.exists());

        //public boolean isFile()	判断当前文件对象指代的是否是文件
        System.out.println(file.isFile());

        //public boolean isDirectory()	判断当前文件对象指代的是否是文件夹
        System.out.println(folder.isDirectory());

        //public String getName()	获取文件的名称(包含后缀)
        System.out.println(file.getName());

        //public long length()	获取文件的大小,返回字节数
        long length = file.length();
        System.out.println(length);

        //public long lastModified()	获取文件最后的修改时间
        long millis = file.lastModified();
        //获取时间戳对象实例
        Instant instant = Instant.ofEpochMilli(millis);
        /* 通过本地默认时区和时间戳结合创建ZoneDateTime对象,
           再调用toLocalDateTime方法获取该日期时间的LocalDateTime部分
           ,然后赋值给LocalDateTime对象dateTime
         */
        LocalDateTime dateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //格式化并输出
        System.out.println(dateTime.format(dtf));

        //public String getPath()	获取创建文件对象时所使用的路径
        System.out.println(file.getPath());
        //public String getAbsolutePath()	获取绝对路径
        System.out.println(file.getAbsolutePath());
    }
}


File提供的创建及删除文件的方法

方法名说明
public boolean createNewFile()创建一个新文件,成功返回true,失败返回false
public boolean mkdir()创建文件夹,只能创建一级文件夹
public boolean mkdirs()创建文件夹,可以创建多个文件夹
public&enspboolean delete()删除文件或空文件夹,不能删除非空文件夹

用delete方法删除后的文件不会进入回收站

案例演示

public class FileCreateDeleteTest {
    public static void main(String[] args) throws Exception{
        // public boolean createNewFile():创建一个新文件,成功返回true,失败返回false
        File file = new File("F:\\Data\\abc.txt");
        System.out.println(file.createNewFile());

        // public boolean mkdir():创建一个一级目录,成功返回true,失败返回false
        File directory = new File("F:\\Data\\abc\\bcd");
        File directory2 = new File("F:\\Data\\abc");
        System.out.println(directory.mkdir());
        System.out.println(directory2.mkdir());

        //  public boolean mkdirs():创建一个目录树,成功返回true,失败返回false
        File directory3 = new File("F:\\Data\\abc\\bcd\\cde");
        System.out.println(directory3.mkdirs());

        //  public boolean delete():删除文件或空文件夹,不能删除非空文件夹
        //  cde文件夹成功删除
        System.out.println(directory3.delete());

        //往bcd里填充文件再删除,删除失败
        File file2 = new File("F:\\Data\\abc\\bcd\\1.txt");
        System.out.println(file2.createNewFile());

        File directory4 = new File("F:\\Data\\abc\\bcd");
        System.out.println(directory4.delete());
    }
}

File类提供的遍历目录的功能

方法名说明
public String[] list()返回一个字符串数组,它包含目录中所有子文件和子目录的名字(不包括路径)
public File[] listFiles()列出指定目录下的所有子文件和子目录

案例演示

public class FileTest2 {
    public static void main(String[] args) throws Exception {
        //  public String[] list():获取当前目录下所有的一级目录名称到字符串数组中去返回
        File f1 = new File("F:\\Data");
        String[] folderNames = f1.list();
        for (String folderName : folderNames) {
            System.out.println(folderName);
        }

        //  public File[] listFiles():获取当前目录下所有的一级文件对象到一个文件对象数组中去返回
        File[] files = f1.listFiles();
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }
    }
}

案例:改变某文件夹下文件的序号和后缀,要求从序号19开始,后缀由txt改为doc

public class FileTest3 {
    public static void main(String[] args) throws IOException {
        // 改变某文件夹下文件的序号和后缀,要求从序号19开始,后缀由txt改为doc
        // 1.创建目录TestFiles
        File file = new File("F:\\Data\\TestFiles");
        file.mkdir();

        // 2.批量创建文件
        for (int i = 0; i < 20; i++) {
            String path = file.getPath() + File.separator + (i + 1) + ".txt";
            File f = new File(path);
            f.createNewFile();
        }
        // 3.遍历文件夹下所有文件
        File[] files = file.listFiles();
        for (File fi : files) {
            String fileName = fi.getName();
            String index = fileName.substring(0, fileName.indexOf("."));
            String finalName = (Integer.parseInt(index) + 18) + ".doc";
            //重命名文件,参数为File对象
            fi.renameTo(new File(file, finalName));
        }
    }
}

注:
  当主调是文件或路径不存在时,返回null
  当主调是空文件夹时,返回一个长度为0的数组
  当主调是一个有内容的空文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回
  当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回
  当主调是一个文件夹,但没有权限访问该文件夹时,返回null

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离歌慢饮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值