0
자바에서 직렬화를 사용하여 "Tweet"개체를 "tweet.ser"파일에 저장하고 파일을 읽으려고합니다.직렬화를 사용하여 Java에서 파일 저장 및 읽기
public static void main(String[] args) {
// TODO code application logic here
Tweet tweet = new Tweet("Programmer", "I can program in java.");
SaveRead.save(tweet);
Tweet reLoaded = SaveRead.loadTweet();
System.out.println(reLoaded);
}
public class SaveRead {
public static void save(Tweet tweet) {
try (FileOutputStream fos = new FileOutputStream("tweet.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos);) {
oos.writeObject(tweet);
} catch (IOException ioe) {
System.out.println("Problem saving tweet");
ioe.printStackTrace();
}
}
public static Tweet loadTweet() {
Tweet tweet = new Tweet("", "");
try (FileInputStream fis = new FileInputStream("tweet.ser"); ObjectInputStream ois = new ObjectInputStream(fis);) {
tweet = (Tweet) ois.readObject();
} catch (IOException ioe) {
System.out.println("Error reading file");
ioe.printStackTrace();
} catch (ClassNotFoundException cnfe) {
System.out.println("Error loading treets");
cnfe.printStackTrace();
}
return tweet;
}
}
이 나는 트윗 객체를 생성하고 저장하고 그것을 읽으려고하는 방법이다 :
이 절약 및 직렬화를 통해 독서에 대한 내 코드입니다
프로젝트 폴더에 생성 된 "tweet.ser"파일을 볼 수는 있지만 내 프로그램이 저장된 트윗을 올바르게 읽지 못하는 것입니다. 나는 reLoaded 트윗이 "프로그래머", "나는 자바로 프로그램 할 수있다"라고 말할 것을 기대하고있다. 그러나 내가 할 모든이입니다 [email protected] 주석 및 솔루션을 @Henrik하는
Tweet 클래스에'toString()'메소드를 추가하십시오. – csmckelvey
'Tweet' 클래스에서'toString()'메서드를 제대로 오버라이드 했습니까? 이것이'main' 메소드의 마지막 라인에서 호출하는 것입니다. – Henrik
게시 한 코드는 실행중인 코드 일 수 없습니다. tweet.txt에 쓰고 tweet.ser에서 읽습니다. 하지만 네, 모든 것이 좋습니다. 방금 트윗을 인쇄하는 중이지만 트윗이 String으로 변환되는 방법을 정의하지 않았으므로 toString()의 기본 Object 구현을 사용합니다. –