2016-01-23 5 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(); 

Мне нужно сериализовать объект входной_файл и отправить его клиенту. Объект ObjectOutputStream и ObjectInputStream не являются Serializable. Какой был бы лучший способ для этого?

ответ

0

Вы не можете сериализовать файлы - это означало бы, что клиент мог читать из файла на сервере, что потребует сложного протокола, который просто отсутствует в механизме сериализации Java.

Лучше всего прочитать данные из файла в массив байтов, а затем либо отправить массив байтов явно клиенту, либо сериализовать массив байтов в ObjectOutputStream (вы сделали бы это, если хотите для отправки других объектов)

Вы можете использовать apache-commons 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); 
Смежные вопросы