1.Files
类
要处理文件,有一个巧妙的实用程序类 — java.nio.file.Files
. 它有适合各种场合的方法。这个类的所有方法都是静态的,并且对 Path 对象进行操作。有很多方法,所以我们只考虑最重要的方法:
方法 | 描述 |
---|---|
|
创建一个新文件,其路径为path |
|
创建一个新目录 |
|
创建多个目录 |
|
创建一个临时文件 |
|
创建一个临时目录 |
|
删除一个文件或目录,如果它是空的 |
|
复制文件 |
|
移动文件 |
|
检查路径是否是目录而不是文件 |
|
检查路径是否是文件而不是目录 |
|
检查给定路径中是否存在对象 |
|
返回文件大小 |
|
以字节数组的形式返回文件的全部内容 |
|
以字符串形式返回文件的全部内容 |
|
以字符串列表的形式返回文件的全部内容 |
|
将字节数组写入文件 |
|
将字符串写入文件 |
|
从给定目录返回文件(和子目录)的集合 |
2.创建文件和目录
文件和目录很容易创建。让我们用一些例子说服自己:
代码 | 笔记 |
---|---|
|
创建一个文件 |
|
创建一个目录 |
|
创建一个目录和所有必要的子目录(如果它们不存在)。 |
3.复制、移动、删除
复制、移动和删除文件同样简单。这也适用于目录,但它们必须是空的。
代码 | 笔记 |
---|---|
|
复制文件 |
|
移动和重命名文件 |
|
删除文件 |
4. 检查文件的类型和存在
当你有别人提供的路径时,你想知道它是文件还是目录。一般来说,这样的文件/目录是否存在?
这也有特殊的方法。您还可以轻松找出文件的长度:
代码 | 笔记 |
---|---|
|
|
|
|
|
|
|
|
5. 处理文件内容
最后,还有一系列的方法可以轻松读取或写入文件的内容。例子:
代码 | 描述 |
---|---|
|
读取文件内容作为字符串列表。 显示字符串 |
6.获取目录内容
最有趣的方法仍然存在。它用于获取给定目录中的文件和子目录。
我们正在谈论newDirectoryStream()
返回一个特殊DirectoryStream<Path>
对象的方法。它有一个迭代器(!),您可以使用它来获取给定目录的所有文件和子目录。
这比听起来容易。
代码 | 描述 |
---|---|
|
获取包含文件列表的对象 遍历文件列表 |
该DirectoryStream<Path>
对象有两个属性。首先,它有一个返回文件路径的迭代器,我们可以在循环中使用这个对象for-each
。
其次,这个对象是一个数据流,所以它必须使用close()
方法显式关闭,或者在块内声明使用try-with-resources
。
七、Files.newInputStream
方法
从 Java 5 开始,FileInputStream
和FileOutputStream
类已被弃用。它们的缺点之一是创建这些类的对象时,会立即在磁盘上创建文件。并且所有与文件创建相关的异常都可能被抛出。
后来这被认为不是最好的决定。因此,建议使用java.nio.Files
实用程序类的方法来创建文件对象。
这是创建文件的旧方法和新方法之间的比较:
前 |
---|
|
后 |
|
并且有一个类似的替代品FileOutputStream
:
前 |
---|
|
后 |
|
GO TO FULL VERSION