2017-01-12 1 views
-2

이 해시 맵을 txt 파일에 쓰거나 읽고 싶습니다.해시 맵을 저장하고 파일에 읽으시겠습니까?

Main 클래스 :

SaveRead xd = new SaveRead(); 
    HashMap <String,Integer>users = new HashMap<String,Integer>(); 

// 전자가 시작할 때 호출되는이

private Object e() throws ClassNotFoundException, FileNotFoundException, IOException { 
     return xd.readFile(); 
    } 

    public void onFinish() { 
      try { 
      xd.saveFile(users); 
     } catch (IOException e) { 
     } 
    } 

// SaveRead 클래스 :

public class SaveRead implements Serializable{ 

    public void saveFile(HashMap<String, Integer> users) throws IOException{ 
    ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("/Users/Konto/Documents/scores.txt")); 
    outputStream.writeObject(users); 
} 

    public HashMap<String, Integer> readFile() throws ClassNotFoundException, FileNotFoundException, IOException{ 
     Object ii = new ObjectInputStream(new FileInputStream("/Users/Konto/Documents/scores.txt")).readObject(); 
     return (HashMap<String, Integer>) ii; 
    } 
} 

이이 보이는가이 내가 시도 것입니다 승인? 파일을 읽을 때 원하는 결과를 얻지 못합니다. 그것에 대해 더 좋은 방법이 있습니까?

+1

* 더 나은 문제 설명을 얻기의 기회가 * "내가 원하는 결과를 얻을 해달라고?" – Tom

+1

[HashMap을 파일에 읽고 쓰는 법?] 가능한 복제본 (https://stackoverflow.com/questions/3347504/how-to-read-and-write-a-hashmap-to-a-file) – Loren

답변

2

아마도 스트림을 닫지 않아서 내용이 디스크로 플러시되지 않기 때문일 수 있습니다. try-with-resources statement (Java 7 이상에서 사용 가능)으로이를 정리할 수 있습니다.

public class SaveRead implements Serializable 
{ 
    private static final String PATH = "/Users/Konto/Documents/scores.txt"; 

    public void saveFile(HashMap<String, Integer> users) 
      throws IOException 
    { 
     try (ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(PATH))) { 
      os.writeObject(users); 
     } 
    } 

    public HashMap<String, Integer> readFile() 
      throws ClassNotFoundException, IOException 
    { 
     try (ObjectInputStream is = new ObjectInputStream(new FileInputStream(PATH))) { 
      return (HashMap<String, Integer>) is.readObject(); 
     } 
    } 

    public static void main(String... args) 
      throws Exception 
    { 
     SaveRead xd = new SaveRead(); 

     // Populate and save our HashMap 
     HashMap<String, Integer> users = new HashMap<>(); 
     users.put("David Minesote", 11); 
     users.put("Sean Bright", 22); 
     users.put("Tom Overflow", 33); 

     xd.saveFile(users); 

     // Read our HashMap back into memory and print it out 
     HashMap<String, Integer> restored = xd.readFile(); 

     System.out.println(restored); 
    } 
} 

는 컴파일이가 내 컴퓨터에서 다음과 같은 출력 실행 : 다음은 컴파일 가능한 예제가

 
{Tom Overflow=33, David Minesote=11, Sean Bright=22}