Сохранение имени переданного файла - PullRequest
0 голосов
/ 01 февраля 2012

Я использую обычное программирование сокетов Java для успешной передачи известного файла. Это мой фрагмент кода:

Socket sock = new Socket("192.168.1.3", 6789);
byte[] mybytearray = new byte[9999];
InputStream is = sock.getInputStream();
FileOutputStream fos = new FileOutputStream("filename.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
int bytesRead = is.read(mybytearray, 0, mybytearray.length);
bos.write(mybytearray, 0, bytesRead);
bos.close();
sock.close();

Однако в этом коде я должен явно назвать принимающий файл как filename.txt, я хочу сохранить имя файла, который передается. Один из способов сделать это - явно передать имя файла и затем передать файл (я думаю, что это правильно) ИЛИ Есть ли другой способ сделать это?

Ответы [ 3 ]

4 голосов
/ 01 февраля 2012

Сокет не имеет имени файла. Вы читаете байты из сокета, когда они приходят, они могут быть чем угодно.

1 голос
/ 01 февраля 2012

Вы передаете поток байтов, относящихся к файлу, чье имя файла в источнике не имеет отношения к месту назначения, чтобы успешно передать байты файла.Если вас волнует имя файла, указанное в источнике, отправьте это имя файла отдельно в место назначения.

1 голос
/ 01 февраля 2012

Вы должны добавить имя файла в поток и использовать разделитель, чтобы выделить его из содержимого

Если вы не можете изменить поток, в худшем случае используйте другое соединение только для отправкиимя, закройте его, а затем прочитайте содержимое из другого потока

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...