0

我正在尝试将 XML 文件从桌面服务器传输到 Android 客户端,但我在 Android 设备上只获得了整个文件的 1024 字节。我的代码是:


将文件从桌面服务器发送到 Android 客户端:

byte[] mybytearray = new byte[(int) filePianificazione.length()];

BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(filePianificazione));

bufferedInputStream.read(mybytearray, 0, mybytearray.length);

bufferedInputStream.close();

out.write(mybytearray, 0, mybytearray.length);

out.flush();

从Android客户端接收文件到服务器:

byte[] mybytearray = new byte[1024];

FileOutputStream fos = new FileOutputStream(file.getAbsolutePath());

BufferedOutputStream bos = new BufferedOutputStream(fos);

int bytesRead = in.read(mybytearray, 0, mybytearray.length);

bos.write(mybytearray, 0, bytesRead);

bos.close();
4

2 回答 2

1

首先你声明byte[] mybytearray = new byte[1024];

然后你做一个单

int bytesRead = in.read(mybytearray, 0, mybytearray.length);

bos.write(mybytearray, 0, bytesRead);

在您的读取代码(Android 客户端)中,您只读取 1024 个字节,因为这是您的输入缓冲区的长度,并且您只读取一次。您需要有一个while循环,该循环将继续从您的输入流中读取,然后将其写出,直到您到达 EOF。

就像是:

while(in.available() > 0)
{
    int bytesRead = in.read(mybytearray, 0, mybytearray.length);
    bos.write(mybytearray, 0, bytesRead);
}
于 2012-10-01T20:22:37.217 回答
0

在 Java 中复制流的规范方法如下:

while ((count = in.read(buffer)) > 0)
{
  out.write(buffer, 0, count);
}
于 2012-10-02T10:06:42.430 回答