2014-06-19 2 views
0

이 코드를 사용하여 직렬화 된 파일에 10 개의 레코드/개체를 쓰고 이제 다른 레코드/개체를 유지하면서 파일에 쓰여진 여섯 번째 레코드/개체 만 수정하거나 편집하려고합니다. 내가 그걸 어떻게 할 수 있는지 말해줘 ???직렬화 된 파일 편집

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import java.io.Serializable; 
import java.util.Scanner; 

public class Write {  

    public static void main(String arg[]) throws FileNotFoundException, IOException { 

     ObjectOutputStream to = new ObjectOutputStream(new FileOutputStream("file.cer")); 
     Scanner out = new Scanner(System.in); 
     String name; 
     Double age; 

     System.out.println("write NAME and AGE otherwise ctrl+z to teminate."); 
     while(out.hasNext()) { 
      name=out.nextLine(); 
      age=out.nextDouble(); 
      to.writeObject(new Data(name,age)); 
      System.out.println("write NAME and AGE otherwise ctrl+z to teminate."); 
     } 
     out.close(); 
     System.out.println("Ended"); 
    } 
} 

class Data implements Serializable { 

    String name; 
    Double age; 

    public Data(String name, Double age) { 
     this.name=name; 
     this.age=age; 
    } 
} 
+3

모든 개체를로드하고 다시 작성해야합니다. – MadProgrammer

+1

이 단계에서 음소거가 될 수도 있지만 오브젝트 직렬화는 일반적으로 유선을 통한 전송을 위해 객체의 단기 저장을위한 것이 었습니다 또는 RPC 용도로. 이것은 장기 저장 메커니즘으로는 적합하지 않습니다. JAXB 대신 (예를 들어) JAXB 사용을 고려해보십시오. – MadProgrammer

답변

0

파일의 특정 개체를 편집 할 수 없을 것이라고 생각합니다. 당신이해야 할 일은,

  1. 파일의 모든 데이터를 읽는 것입니다.
  2. 원하는 개체를 편집하십시오.
  3. 이전 데이터를 덮어 씁니다.
0

다른 레코드/오브젝트를 유지하는 파일에 기록 된 6 번째 레코드/오브젝트 만 수정/편집하고 싶습니다. 내가 어떻게 할 수 있는지 말해줘?

실제로는 사용할 수 없습니다. 직렬화 된 스트림에는 블록 마커와 데이터 카운트 및 일반적으로 불가능한 모든 종류의 것들이 포함됩니다.