java保留传输文件的名称
我正在使用普通的Javasocket编程成功地传输一个已知文件。这是我的代码片段:
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
,我希望保留要传输的文件的名称。一种方法是显式地传输文件名,然后传输文件(我认为它是正确的),或者有其他方法可以这样做吗
# 1 楼答案
您正在传输与文件相关的字节流,为了成功传输文件字节,源位置的文件名与目标位置无关。如果您关心源位置给出的文件名,请将该文件名单独发送到目标位置
# 2 楼答案
套接字没有文件名。你从套接字读取字节,它们可能是任何东西
# 3 楼答案
您应该在流中添加文件名,并使用分隔符从内容中标记它
如果无法更改流,最糟糕的情况是使用另一个连接只发送名称,关闭它,然后从另一个流读取内容