【问题标题】:Retaining the name of the transferred file保留传输文件的名称
【发布时间】:2012-02-24 05:52:39
【问题描述】:

我正在使用普通的 Java 套接字编程来成功传输一个已知文件。这是我的代码 sn-p:

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,我想保留正在传输的文件的名称。一种方法是显式传输文件名,然后传输文件(我认为它是正确的)或者有其他方法吗?

【问题讨论】:

    标签: java sockets java-io serversocket


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您应该在流中添加文件名并使用分隔符将其与内容标记

      如果你不能改变流,最坏的情况是使用另一个连接只发送名称,关闭它,然后从另一个流中读取内容

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我同意这一点,但有什么方法可以保留我从中传输字节的文件名?
        猜你喜欢
        • 1970-01-01
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-01
        • 2017-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多