保留传输文件的名称

时间:2012-02-01 14:41:51

标签: java sockets java-io serversocket

我正在使用普通的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 个答案:

答案 0 :(得分:4)

套接字没有文件名。你从套接字中读取字节,它们可以是任何东西。

答案 1 :(得分:1)

您应该在流中添加文件的名称,并使用分隔符从内容中标记它

如果您无法更改流,最糟糕的情况是仅使用另一个连接发送名称,关闭它,然后从另一个流中读取内容

答案 2 :(得分:1)

您正在传输与文件相关的字节流,该文件的源文件名与目标无关,以便成功传输文件字节。如果您关心源文件中给出的文件名,请将该文件名单独发送到目的地。