Как написать файл, используя ObjectOutputStream? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь записать в файл и теперь сузил проблему до метода writeObject ().

Это не запись данных в файл.

Когда язапустите oos.writeObject (siteData), ничего не происходит.Файл остается пустым

Как вы можете видеть в следующем коде, я вставил некоторые System.out.println () s, и все они возвращают полный список

, на который я также смотрелэто пошагово в отладчике, и оно не перезаписывается позже в программе.

Я также убедился, что SiteData реализует Serializable

Что может вызвать эту проблему?

public void saveToStorageFile() throws IOException {

       System.out.println("saveToStorageStart() started!");

       FileOutputStream fos = new FileOutputStream(new File("SiteDataStorage"));
       ObjectOutputStream oos = new ObjectOutputStream(fos);

       //Prints the List
       for(int i = 0 ; i < this.size(); i++) {
           System.out.println("Save list:" + this.db.get(i).getText());
       }

       SiteData[] siteData = db.toArray(new SiteData[db.size()]);

       //Prints the sitedata array length
       System.out.println(siteData.length);

       oos.writeObject(siteData);
       oos.close();

       System.out.println("Saved!");
   }

Спасибо!

1 Ответ

1 голос
/ 24 апреля 2019

Я добавил это, чтобы сделать его полным примером.

import java.io.*;
import java.util.*;

class SiteData implements Serializable {
    public static void main(String[] args) throws Throwable {
        new SiteData().saveToStorageFile();
    }
    private int size() { return 1; } // Did you not want db?
    private List<SiteData> db = List.of(this);
    private String getText() { return "Some text"; }

И добавил }, чтобы закрыть класс.

Работает для меня!

...