如何使用BufferedStreams和ObjectStreams并行

时间:2016-02-22 17:24:33

标签: java android networking

对于从我的Android客户端向我的电脑服务器发送文件(例如.jpg),我感到非常困惑。问题是我之前使用ObjectStreams来往往发送其他数据和消息(封装在类对象中)。但是现在当我想发送整个文件时,我首先尝试将文件的字节编码为类对象内的字节数组变量,并使用ObjectOutputStream.writeObject()发送该对象。但是在PC端,当我将ObjectInputStream()读回到bytearray并将字节存储到文件中时,原始图像文件被破坏并且无用。

经过一些阅读后,我发现我必须使用缓冲来获取另一方的确切文件,而不是腐败。但我如何同时使用ObjectStreams和amp; OutputStream同时在单个套接字连接上。

以下是一些代码:

private ObjectOutputStream connectionOutput;
connectionOutput = new ObjectOutputStream(connectionSocket.getOutputStream());
public void sendPacket(AbstractPacket packet) throws IOException {//'packet' contains all the data
    connectionOutput.writeObject(packet);
    connectionOutput.flush();
    connectionOutput.reset();
}

如果我添加了另一种方法,如:

private BufferedOutputStream BufferedconnectionOutput;
private OutputStream outputStream;
outputStream = socket.getOutputStream();

public void sendPacket(File file) throws IOException {
  byte[] mybytearray = new byte[(int) file.length()];
  fileInputStream = new FileInputStream(file);
  bufferedInputStream = new BufferedInputStream(fileInputStream);
  bufferedInputStream.read(mybytearray, 0, mybytearray.length);
  outputStream.write(mybytearray, 0, mybytearray.length);
}

如果我在发送端使用这两个,我怎么能区分ObjectStreams&接收端的OutputStream。

0 个答案:

没有答案