Java 如何创建用于序列化的文件?

Java 如何创建用于序列化的文件?,java,serialization,java-io,Java,Serialization,Java Io,我需要编写一个方法来获取对象数组并将它们序列化到文件中。我的问题是如何检查文件是否存在,如果文件不存在,它将创建一个文件,然后将对象序列化到该文件 使用和: 除了new Filepath.exists之外,已经指出还有Files.existspath,它接受您需要构造的Path对象。要使用哪一个取决于文件路径在应用程序中的到达方式,以最简单的方式为准。只要对象是可序列化的,并且您有和,您就可以使用和: 使用Java8文件API final Path path = Paths.get(URI.cr

我需要编写一个方法来获取对象数组并将它们序列化到文件中。我的问题是如何检查文件是否存在,如果文件不存在,它将创建一个文件,然后将对象序列化到该文件

使用和:


除了new Filepath.exists之外,已经指出还有Files.existspath,它接受您需要构造的Path对象。要使用哪一个取决于文件路径在应用程序中的到达方式,以最简单的方式为准。

只要对象是可序列化的,并且您有和,您就可以使用和:

使用Java8文件API

final Path path = Paths.get(URI.create("file:/C:/temp/test.txt"));
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final ObjectOutputStream objOut = new ObjectOutputStream(out);
// add your objects here
objOut.writeObject(new Object());
Files.write(path, out.toByteArray(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);

如果有呢?检查一下这个链接,看看它的副本question@smacaz这个问题的一小部分的副本。@smacaz看一下;是的,因此如果此程序在另一个用户控制台上运行,它可以从程序中读取,而不是从计算机上存储的路径中读取。这有意义吗?谢谢你的反馈@您可以使用ClassgetResourceAsStreamString读取资源文件,尽管创建资源文件是另一个主题。请参阅@QuintonThompson,所以当你在问题中清楚地说“文件”时,你现在的意思是“不是文件”。请澄清.File.createNewFile无法实现所述目标。
File file = new File(<file>)
if(!file.exists()){
    FileUtils.writeByteArrayToFile (file, SerializationUtils.serialize(<obj>));
}
final Path path = Paths.get(URI.create("file:/C:/temp/test.txt"));
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final ObjectOutputStream objOut = new ObjectOutputStream(out);
// add your objects here
objOut.writeObject(new Object());
Files.write(path, out.toByteArray(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);