1、OpenOptions参数
该参数是可选的,当未指定任何参数时,API会告诉您该方法的默认行为是什么。
OpenOptions支持以下枚举:
WRITE:打开文件以进行写访问。
APPEND:将新数据追加到文件末尾。此选项与WRITE或CREATE选项一起使用。
TRUNCATE_EXISTING:将文件截断为零字节。此选项与WRITE选项一起使用。
CREATE_NEW:创建一个新文件,如果该文件已经存在,则引发异常。
CREATE:打开文件(如果存在)或创建新文件(如果不存在)。
DELETE_ON_CLOSE:关闭流时删除文件。此选项对临时文件很有用。
SPARSE:提示新创建的文件将是稀疏的。此高级选项在某些文件系统(例如NTFS)上很受好评,其中带有数据“间隙”的大文件可以以更有效的方式存储,而这些空白不会占用磁盘空间。
SYNC:使文件(内容和元数据)与基础存储设备保持同步。
DSYNC:使文件内容与基础存储设备同步。
2、读取小文件常用方法
1) 从文件读取所有字节或行
如果您的文件很小,并且希望一次性读取其全部内容,则可以使用 readAllBytes(Path)或 readAllLines(Path, Charset)方法。这些方法将为您完成大部分工作,例如打开和关闭流,但不适用于处理大文件。以下代码显示了如何使用该readAllBytes方法:
Path file = ...;
byte[] fileArray;
fileArray = Files.readAllBytes(file);
2) 将所有字节或行写入文件
您可以使用一种写入方法将字节或行写入文件。
- write(Path, byte[], OpenOption...)
- write(Path, Iterable< extends CharSequence>, Charset, OpenOption...)
以下代码片段显示了如何使用write方法。
Path file = ...;
byte[] buf = ...;
Files.write(file, buf);
2、通过Buffered I/O(BufferedReader、BufferedWriter)读写文本文件
该java.nio.file软件包支持通道I / O,该通道将数据移动到缓冲区中,从而绕过了一些可能会阻塞流I / O的层。
1) 通过使用Buffered I/O读取文件
该 newBufferedReader(Path, Charset)
方法打开一个文件进行读取,并返回一个BufferedReader
可用于以有效方式从文件中读取文本的文件。
以下代码段显示了如何使用该newBufferedReader
方法从文件读取。该文件以“US-ASCII”
编码。
Charset charset = Charset.forName("US-ASCII");
try (BufferedReader reader = Files.newBufferedReader(file, charset)) {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException x) {
System.err.format("IOException: %s%n", x);
}
2) 通过使用Buffered I/O写入文件
您可以使用newBufferedWriter(Path, Charset, OpenOption...)方法使用 写入文件BufferedWriter
。
以下代码段显示了如何使用此方法创建以“US-ASCII”
编码的文件:
Charset charset = Charset.forName("US-ASCII");
String s = ...;
try (BufferedWriter writer = Files.newBufferedWriter(file, charset)) {
writer.write(s, 0, s.length());
} catch (IOException x) {
System.err.format("IOException: %s%n", x);
}
相关文档:https://docs.oracle.com/javase/tutorial/essential/io/file.html