将Byte[]追加到二进制文件的末尾

11

我正在解析一个文件。我将创建一个新的输出文件,并需要将“byte [] data”添加到其中。然后,我将需要将许多其他“byte [] data”附加到文件末尾。我考虑让用户添加命令行参数来指定输出文件名,因为他们已经提供了我们要解析的文件名。话虽如此,如果文件名在系统中尚未创建,我感觉应该生成一个。

现在,我不知道如何做到这一点。我的程序目前正在使用DataInputStream获取和解析文件。我能否使用DataOutputStream进行附加?如果可以,我想知道如何追加到文件而不是覆盖。


1
关键是你如何打开文件。你必须选择以追加方式打开,而不是简单输出。 - Hot Licks
3个回答

35

如果是这样,我想知道如何追加文件而不是覆盖。

很简单 - 您甚至不需要DataOutputStream。只需使用FileOutputStream即可,使用带有append参数的构造函数:

FileOutputStream output = new FileOutputStream("filename", true);
try {
   output.write(data);
} finally {
   output.close();
}

或者使用Java 7的try-with-resources

try (FileOutputStream output = new FileOutputStream("filename", true)) {
    output.write(data);
}

如果你因为某些原因确实需要使用DataOutputStream,可以将以相同方式打开的FileOutputStream进行包装。


太棒了,谢谢!第二个true参数是追加选项,我猜是这样吧?我刚刚检查过了,是的! - john stamos
@johnstamos:是的 - 跟随答案中的链接。 - Jon Skeet
谢谢。而且这也适用于安卓!!加个句号!:-) - SWIK

4
Files.write(new Path('/path/to/file'), byteArray, StandardOpenOption.APPEND);

这是用于字节追加的。不要忘记异常处理。


3
欢迎来到SO,感谢您提供答案。这个答案被列入低质量帖子队列进行审核,因为它只包含了代码,我们并不是特别喜欢这样的答案。如果您想参与讨论,那么您需要在回答中多做些努力。我们期望代码附有解释,说明它如何解决问题。如果您愿意,可以阅读[问答]来更加清楚地理解。感谢您的时间。 - Software Engineer
1
使用以下代码片段:Files.write(Paths.get("/var/error.txt"), byteArray, StandardOpenOption.APPEND); - ThinkTank

1
File file =new File("your-file");
FileWriter fileWritter = new FileWriter(file.getName(),true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(your-string);
bufferWritter.close();

当然要把这段代码放在try-catch块中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接