文
章
目
录
章
目
录
学习使用不同的解决方案将给定的字节数组写入文件。我们将使用Java NIO、Commons IO和Guava API,它们为这个用例提供了简单的API。
1.Java NIO的Files.write()
Files.write()是最简单的将字节写入文件的方法。
在写入字节时,我们应该非常小心文件的打开选项。默认情况下,使用CREATE、TRUNCATE_EXISTING和WRITE选项。这意味着该方法打开文件进行写入,如果不存在则创建文件,或者最初将常规文件截断为0大小。
byte[] bytes = "testData".getBytes();
Path filePath = Paths.get("test.txt");
Files.write(filePath, bytes);
如果我们不覆盖文件内容,而是要将字节追加到现有文件内容中,那么我们可以使用StandardOpenOption.APPEND选项。
byte[] bytes = "testData".getBytes();
Path filePath = Paths.get("test.txt");
Files.write(filePath, bytes, StandardOpenOption.APPEND);
如果我们想要创建一个新文件,则可以传递StandardOpenOption.CREATE_NEW选项。这确保了如果文件已经存在,该方法将抛出FileAlreadyExistsException。
byte[] bytes = "testData".getBytes();
Path filePath = Paths.get("test.txt");
Files.write(filePath, bytes, StandardOpenOption.CREATE_NEW);
2. 使用FileOutputStream
使用FileOutputStream是另一种好方法。我们可以为新文件或现有文件创建输出流并将字节写入流中。
如果您没有使用try-with-resources语句,请不要忘记关闭输出流。
byte[] bytes = "testData".getBytes();
File file = new File("test.txt");
try (FileOutputStream os = new FileOutputStream(file)) {
os.write(bytes);
}
3.Commons IO的FileUtils
FileUtils类有一个writeByteArrayToFile()方法,可以将字节数组数据写入指定的文件。如果文件或其父目录不存在,它将创建新的文件和目录。
File file = new File("test.txt");
byte[] bytes = "testData".getBytes();
FileUtils.writeByteArrayToFile(file, bytes);
在项目中包括最新的maven依赖来使用Commons IO。
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
4.Guava的Files
与之前的解决方案类似,Files.write()方法将字节写入指定的文件。需要注意的是,此方法将覆盖具有字节数组内容的文件。
File file = new File("test.txt");
byte[] bytes = "testData".getBytes();
com.google.common.io.Files.write(bytes, file);
5.结论
在这篇简短的Java教程中,我们学会了使用各种Java API以及Commons IO和Guava库将字节数组内容写入文件。