2012-02-01 102 views
0

我使用普通的Java Socket编程来成功传输已知文件。这是我的代码片段:保留传输文件的名称

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,我想保留,这是获得传输的文件的名称。一种方法是显式传输文件的名称,然后传输文件(我认为它是正确的)或者是否有其他方法可以做到这一点?

回答

4

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

+0

我同意这一点,但有什么办法保留我从中传输字节的文件名? – Purushottam 2012-02-01 16:09:42

1

你应该流中添加文件的名称,并使用分离器,将其从内容

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

1

您正在传输与文件相关的字节流,该文件的源文件名与目标不相关,以便成功传输文件字节。如果您关心在源处给出的文件的名称,请将该文件名分别发送到目标。