2014-11-14 6 views
0

파일에 개체를 쓰거나 읽으려고하는데 편집 한이 코드가 떠오르지 만 파일을 열면 이상한 문자와 기호가 나타납니다. 거기에 Serializable 물건 thats. 제대로 쓰는 방법이 있습니까? 그건 지금까지 제 코드입니다.파일에 쓰기/읽기

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import java.io.FileInputStream; 
import java.io.ObjectInputStream; 
import java.io.Serializable; 


public class Controlador_Dades_Doctor 
{ 
    public void escriureFitxer(Doctor doctor){ 

     ObjectOutputStream out; 
     try { 
      File file = new File("Doctors.ser"); 
      out = new ObjectOutputStream(new FileOutputStream(file)); 
      out.writeObject(doctor); 

      out.flush(); 
      out.close(); 
      System.out.println("Object written to file"); 
     } 
     catch (FileNotFoundException ex) { 
      System.out.println("Error with specified file") ; 
      ex.printStackTrace(); 
     } 
     catch (IOException ex) { 
      System.out.println("Error with I/O processes") ; 
      ex.printStackTrace(); 
     }    
    } 
} 

제 출력 파일에는 이상한 문자가 있습니다.

¬í sr DoctorÑmçUÝâ& I idI num_guardiesD souL nomt Ljava/lang/String;xp  @—p  t rux 

은 또한, 나는이 첫 번째 클래스의지도 또 다른 클래스를 가지고, 내가 너무 파일이 내 의사지도를 포함하는 것, 파일 aswell로 쓸 수있는 방법 단서가있어. 미리 감사드립니다.

+2

"올바르게 작성 하시겠습니까?" 너는 무엇을 기대 하느냐? 왜? –

+0

직렬화의 포인트는 객체의 내용을 나중에 자바 객체 형태로 다시로드 할 수 있도록 작성하는 것입니다. 사용중인 네이티브 Java 직렬화에는 객체를 seralize하는 방법에 대한 특정 형식이 있습니다. 보다 직관적이고 읽기 쉬운 형식의 직렬화를 원한다면 JSON 또는 다른 serailization 메소드를 찾아야한다. – user3062946

+0

나는 그 대신에 writting/reading을 버퍼링하는 것을 의미한다고 생각한다. 나는 그것을 풀었다. 그리고 지금은 제대로 작동하고있다. – Rogercb

답변

2

"쓰기 적절하게". 이것은 Serialize가 해야하는 것입니다. 그것이하는 일에는 아무런 문제가 없습니다. 동일한 객체를 읽으려면 파일을 비대 화하고 객체를 다시 작성하십시오. 인간이 읽을 수있는 객체 데이터가있는 파일을 원한다면 객체 데이터를 .txt 파일에 쓰고 원하는 방식으로 형식을 지정하는 고유 한 방법을 만들어야합니다.

관련 문제