我的类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。请帮忙。谢谢。
答案 0 :(得分:1)
File
只是文件的抽象表示,基本上是实际文件的路径。您无法对其进行序列化,在网络上发送,然后就像文件的实际字节一样。
您需要实际读取文件中的字节并通过网络发送。如果您正在使用小文件,则可以将File
替换为byte[]
(并可能添加文件名或其他元数据)并使用它。
如果你正在使用更大的文件,你应该考虑其他的而不是序列化,因为内存需求变得太大了。