JAVA中的文件操作1-如何获取文件信息,创建文件

createh56个月前 (12-30)技术教程68

JAVA中的文件操作1-如何获取文件信息,创建文件

JAVA7和JAVA8对JAVA的文件操作进行了史诗级增强,使得文件操作变得非常简单,下面简单介绍一下。

Path类表示文件路径

要访问或者创造一个文件,首先我们需要得到文件的路径,java.nio.file.Path就是可以表示路径的类,它既可以表示目录,也可以表示文件。
我们可以用Paths来生成Path,在生成时,可以有以下几种方式:

  1. 直接指定文件路径
  2. 指定父目录,子文件名的方式
  3. 通过URI来标识

下面依次演示一下:

// 直接写路径
Path directPath = Paths.get("D:\\opensource\\springboot-test");
System.out.println(directPath.toAbsolutePath());

// 写父目录+子路径
Path subPath = Paths.get("D:\\opensource", "springboot-test");
System.out.println(subPath.toAbsolutePath());

// 写URI
Path uriPath = Paths.get(URI.create("file:///D:/opensource/springboot-test"));
System.out.println(uriPath.toAbsolutePath());

使用Files工具类对Path进行操作

在拿到Path对象后,我们可能还需要进一步处理,比如增删文件,读取/写入文件,获取路径是否为目录/文件等,这些可以通过Files来完成。
Files类指的是java.nio.file.Files,提供了大量和文件相关的操作方法,有兴趣的可以自行查阅官方文档。

获取Path的基本信息

Path自己提供了获取父目录,获取根目录的方法,如下所示:

Path directPath = Paths.get("D:\\opensource\\springboot-test");
System.out.println("path :");
System.out.println(directPath.toAbsolutePath());
System.out.println("getParent: " + directPath.getParent());
System.out.println("getRoot: " + directPath.getRoot());

输出如下:

path :
D:\opensource\springboot-test
getParent: D:\opensource
getRoot: D:\

除了目录树信息外,我们还可以通过Files提供的工具类获取Path的其他信息,比如是否为目录,是否为文件等,如下所示:

Path directPath = Paths.get("D:\\opensource\\springboot-test");
System.out.println("path :");
System.out.println(directPath.toAbsolutePath());
System.out.println("isDirectory: " + Files.isDirectory(directPath));
System.out.println("isRegularFile: " + Files.isRegularFile(directPath));
System.out.println("exists: " + Files.exists(directPath));

输出如下:

D:\opensource\springboot-test
isDirectory: true
isRegularFile: false
exists: true

除了上面这些信息,Files还可以进一步获取文件权限,文件是否隐藏,文件是否可读/可写/可执行/文件大小等更多信息,就不一一演示了。

创建文件

创建文件分成两种情况:

  1. 目录存在,直接新建一个文件
  2. 目录不存在,甚至目录的父目录也不存在,需要级联创建目录后再创建文件

下面依次演示:

直接新建一个文件,使用Files.createFile

String basePath = "D:\\opensource\\springboot-test";
Path notExistFile = Paths.get(basePath, "notExist.txt");
if (!Files.exists(notExistFile)){
    Files.createFile(notExistFile);
}

目录不存在,新建目录后再创建文件,使用Files.createDirectories创建。
如果路径已存在,而且是目录,调用Files.createDirectories不会有影响。但是如果是一个文件,就会抛出异常了。
一次性可以创建多层不存在的目录。

String basePath = "D:\\opensource\\springboot-test";
String notExistDir = "notExist";
// D:\opensource\springboot-test\notExist\notExist\notExist.txt
// 目录不存在,父目录也不存在。
Path notExistPathAndFile = Paths.get(basePath, notExistDir, notExistDir, "notExist.txt");
Files.createDirectories(notExistPathAndFile.getParent());
if (!Files.exists(notExistPathAndFile)) {
    Files.createFile(notExistPathAndFile);
}

相关文章

java获取文件路径最好的方式(java 获取文件地址)

在开发中,我们经常要去获取文件的路径,那么什么样的方式才是最好的呢? 那就是移植性,不能换了一个软件,或者换了一个系统就需要修改获取文件路径的源码,所以今天我们就来看下这种获取文件路径的方式:注意:这...

「JAVA」三种方式加载本地资源文件:绝对路径、类路径、当前路径

三种方式加载本地资源文件:绝对路径、类路径、当前路径,本文以"db.properties"资源文件为例,分别介绍三种加载本地资源文件的方式。加载properties文件时,使用的是Pr...

Java集合-Properties(Java集合框架)

Properties(java.util.Properties)类,跟Map的key和value都为String类型比较相似,Properties类可以将 c key和 value键值对写道磁盘的pr...

java创建文件夹的4种方法及其优缺点 最全面总结

本文为大家介绍Java IO-创建文件夹的四种方法,及其优缺点的解析。如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力。1.传统API创建文件夹方式Java传统的IO AP...

这才是Java基础知识点的总结(java基础总结大全)

前言本文主要是我之前复习Java基础原理过程中写的Java基础学习总结。Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其底层...