我想通过tcp套接字传输文件和一些额外的数据。如果我能一次完成,而不必把数据分成几次传输,那就太好了。
比如
String data = "some data to be transferred";
File f = new File("myfile");
byte[] fileData = ... //read bytes from file
out.write(data + fileData); //out is some OutputStream
现在,我最好使用哪种输出流?我如何能够在接收端分离数据和文件内容?
编辑:我已经有一个tcp客户端和服务器,都使用printwwriter和BufferedInputReader。目前传输的唯一数据是简单的字符串。我正在寻找一个简单的方法来整合文件传输
由于它是TCP,您知道数据总是被传输并且它以发送的相同顺序到达。知道了这一点以及你发送数据的顺序,你就可以按照你发送的顺序"解包"发送的数据了。
另一个解决方案是将内容包装在一个实现serializable的对象中。如果使用这种技术,就不必担心打包和解包的问题,因为序列化会为您处理这个问题。下面是一个使用它的例子: