2016-01-23 87 views
0

我有一个客户端服务器程序,我需要序列化文件对象并将其发送给客户端。文件对象序列化

在服务器端:

FileInputStream input_file = new FileInputStream(file); 
object_output_stream.writeObject(input_file); 

在客户端:

FileOutputStream ouput_file = new FileOutputStream(new File(filename)); 
output_file = object_input_stream.readObject(); 

我需要序列化INPUT_FILE对象,并将其发送给客户端。 ObjectOutputStream和ObjectInputStream是不可序列化的。最好的办法是什么?

回答

0

不能序列化文件 - 这意味着客户端可以从服务器上的文件读取数据,这需要一个复杂的协议,而这个协议在Java序列化机制中根本不存在。

最好的办法是将文件中的数据读入字节数组,然后将字节数组明确地发送到客户端,或者将ObjectOutputStream中的字节数组序列化(如果需要,您可以这样做)发送其它目的以及)

您可以使用Apache的公地IOUtils.toByteArray(InputStream input)文件读入byte[]容易。

在服务器端:

FileInputStream input_file = new FileInputStream(file); 
byte[] input_data = IOUtils.toByteArray(input_file); 
object_output_stream.writeObject(input_data); 

在客户端:

FileOutputStream output_file = new FileOutputStream(new File(filename)); 
byte[] input_data = (byte[]) object_input_stream.readObject(); 
output_file.write(input_data);