[英]How to serialize fields with objects they are reference to?
我的班級Message是File的班級包裝。 我想序列化Message,在服務器上發送,而不是反序列化並獲取File。 但是當我反序列化時,我只會得到文件名嗎? 我做錯了什么?
類包裝:
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。 請幫助。 謝謝。
File
只是File
的抽象表示,基本上是實際文件的路徑。 您無法對其進行序列化,將其發送到網絡上,然后像顯示文件的實際字節一樣操作。
您實際上需要從文件中讀取字節並通過網絡發送它們。 如果您正在處理小文件,則可以用byte[]
替換File
(並添加文件名或其他元數據)並進行處理。
如果要處理更大的文件,則可能需要考慮序列化之外的其他事情,因為內存需求太大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.