내 클래스 메시지는 File의 클래스 래퍼입니다. deserialize 및 파일 가져 오기 메시지를 직렬화하고 서버에서 보내고 싶습니다. 하지만 deserializing 때, 나는 File name 만 얻는다. 내가 뭘 잘못하고있어?필드를 참조하는 객체로 필드를 직렬화하는 방법은 무엇입니까?
클래스 래퍼 :
public class Message implements Serializable{
private int id;
private File file;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
}
직렬화 복원 코드 :
ObjectInputStream objectInputStream = new ObjectInputStream(in);
Message message = (Message)objectInputStream.readObject();
objectInputStream.close();
String fileText = "";
FileReader fileReader = new FileReader(message.getFile());
BufferedReader br = new BufferedReader(fileReader);
fileText = br.readLine();
내가이 일을하려고, 내가 FileNotFoundException이 얻을. 도와주세요. 고맙습니다.
어떻게 직렬화 하시겠습니까? – pirho
'File' 객체는 경로를 통해 접근 할 수있는 파일이나 디렉토리의 내용이 아닌 경로 * 이름 *을 나타냅니다. 그게 바로 당신이 보는 것입니다. 대신에 내용을 원한다면 적절한 형식의 필드, 아마도'byte []','char []'또는'List'을 선언하십시오. 당신은 아마 하나 또는 다른 것을 원할 것입니다. '파일'과 내용 모두가 아닙니다. –
@pirho'메시지 message = 새 Message(); System.out.println ("파일 경로 설정 :"); String path = scanner.nextLine(); message.setFile (새 파일 (경로)); message.setId ((int) (Math.random() * 10)); ObjectOutputStream objectOutputStream = 새로운 ObjectOutputStream (출력); objectOutputStream.writeObject (message); objectOutputStream.flush(); objectOutputStream.close(); ' –