Java 如何用字段引用的对象序列化字段?

Java 如何用字段引用的对象序列化字段?,java,serialization,Java,Serialization,我的类消息是要归档的类包装器。我想序列化消息,将其发送到服务器上,然后反序列化并获取文件。但是当我反序列化时,我只得到文件名?我做错了什么 类包装器: public class Message implements Serializable{ private int id; private File file; public int getId() { return id; } public void setId(int id) {

我的类消息是要归档的类包装器。我想序列化消息,将其发送到服务器上,然后反序列化并获取文件。但是当我反序列化时,我只得到文件名?我做错了什么

类包装器:

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
Message Message=new Message();System.out.println(“设置文件路径:”);字符串路径=scanner.nextLine();message.setFile(新文件(路径));message.setId((int)(Math.random()*10));ObjectOutputStream ObjectOutputStream=新的ObjectOutputStream(输出);objectOutputStream.writeObject(消息);objectOutputStream.flush();objectOutputStream.close()请将该代码移至问题-编辑-并查看KayamanOk,ty的答案。现在清楚了,。但我怎样才能使用包装纸呢?这真的很有必要。我的消息类中需要字节序列处理程序。包装器?你们在说什么?我在说带文件字段的课堂信息。哦,对不起,我太不专心了。你也回答了这个问题。多谢各位@