有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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,我希望保留要传输的文件的名称。一种方法是显式地传输文件名,然后传输文件(我认为它是正确的),或者有其他方法可以这样做吗


共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

  3. # 3 楼答案

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

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