我正在解析一个文件。我将创建一个新的输出文件,并需要将“byte [] data”添加到其中。然后,我将需要将许多其他“byte [] data”附加到文件末尾。我考虑让用户添加命令行参数来指定输出文件名,因为他们已经提供了我们要解析的文件名。话虽如此,如果文件名在系统中尚未创建,我感觉应该生成一个。
现在,我不知道如何做到这一点。我的程序目前正在使用DataInputStream获取和解析文件。我能否使用DataOutputStream进行附加?如果可以,我想知道如何追加到文件而不是覆盖。
我正在解析一个文件。我将创建一个新的输出文件,并需要将“byte [] data”添加到其中。然后,我将需要将许多其他“byte [] data”附加到文件末尾。我考虑让用户添加命令行参数来指定输出文件名,因为他们已经提供了我们要解析的文件名。话虽如此,如果文件名在系统中尚未创建,我感觉应该生成一个。
现在,我不知道如何做到这一点。我的程序目前正在使用DataInputStream获取和解析文件。我能否使用DataOutputStream进行附加?如果可以,我想知道如何追加到文件而不是覆盖。
如果是这样,我想知道如何追加文件而不是覆盖。
很简单 - 您甚至不需要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
进行包装。
Files.write(new Path('/path/to/file'), byteArray, StandardOpenOption.APPEND);
这是用于字节追加的。不要忘记异常处理。
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块中。