java - 将对象序列化到文件

标签 java file serialization

我有一些存储数据的基本类:

class Item implements java.io.Serializable {
    String this.data = "";
    public void saveData(String data) {
        this.data = data;
    }
    public String getData() {
        return this.data;
    }
}

另一个类中的一个函数,应该将 Item 实例保存到文件中:

    private static void saveItemToFile(File folder, Item item) throws IOException{
    FileOutputStream fos = new FileOutputStream(
            folder.getAbsolutePath() + item.getData() + ".obj");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(item);
    oos.close();
}

测试代码:

Item itm = new Item();
itm.saveData("String data here");
File folder = new File(System.getProperty("user.home") + "/.CDDB");
saveItemToFile(folder, itm);

但是这段代码不起作用。没有引发任何错误或异常,但它只是不在指定文件夹中创建文件。我的错误是什么?

最佳答案

您的目标路径是通过将文件名添加到不带路径分隔符的目录路径来构建的:

folder.getAbsolutePath() + item.getName() + ".obj"

所以你应该有一个名为[USER_HOME]/.CDDB[item name].obj

的文件

最好直接使用 File 对象:

private static void saveItemToFile(File folder, Item item) throws IOException {
    File file = new File(folder, item.getName() + ".obj");
    try (ObjectOutputStream oos =
            new ObjectOutputStream(new FileOutputStream(file))) {
        oos.writeObject(item);
    }
}

关于java - 将对象序列化到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474979/

相关文章:

Java反序列化: final variable value is not assigned

Django REST : Serializer create function request. 用户未找到

java - 类不是抽象的,不会覆盖 OnClickListener 中的抽象方法 onClick(View)

java - 使用Autowire获取spring xml中配置的sftpChannel

java - 可选择对流应用过滤器

java - 属性文件不会被识别!

c++ - 我应该将类放在 C++ 中的单独文件中吗?

java - 服务器端的 GWT I18N

java - 文件重命名失败

java - 为什么 Jackson 不使用扩展 LinkedHashMap 的自定义包装类的 serialize() 方法