2017-04-30 1 views
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하는

+1

Tweet 클래스에'toString()'메소드를 추가하십시오. – csmckelvey

+2

'Tweet' 클래스에서'toString()'메서드를 제대로 오버라이드 했습니까? 이것이'main' 메소드의 마지막 라인에서 호출하는 것입니다. – Henrik

+1

게시 한 코드는 실행중인 코드 일 수 없습니다. tweet.txt에 쓰고 tweet.ser에서 읽습니다. 하지만 네, 모든 것이 좋습니다. 방금 트윗을 인쇄하는 중이지만 트윗이 String으로 변환되는 방법을 정의하지 않았으므로 toString()의 기본 Object 구현을 사용합니다. –

답변

0

감사합니다, 나는 형식으로 출력을 얻을에 추가 내 트윗 클래스에서 toString() 메소드를 오버라이드 (override) 할 필요 저장된 tweet.ser 파일을 deserialize 할 때 필요했습니다.