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

createh51周前 (12-30)技术教程10

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 中获取文件路径的方式,你知道几种?

1. 前言Java 开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件简单地探讨一下。2. 文件的路径文件的路径通常有 相对路径 与 绝对路径。2.1 相对路...

java获取文件路径(java如何获取文件路径)

1. 前言Java 开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件简单地探讨一下。2. 文件的路径文件的路径通常有 相对路径 与 绝对路径。2.1 相对路...

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

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

纯小白干货:Java import以及Java类的搜索路径

如果你希望使用Java包中的类,就必须先使用import语句导入。import语句与C语言中的 #include 有些类似,语法为: import package1[.package2…].class...

Java路径-31-Java数据结构(java数据结构详解)

1 枚举(Enumeration)1.1 Enumeration源码:public interface Enumeration<E> { boolean hasMoreEleme...

几种获取resources目录下的文件方式

前言一般我们的配置信息默认都是会配置在/src/main/resources/application.properties(或者application.yml)文件中,当然,也可以在resources...