我正在尝试将 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();
最佳答案
首先声明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);
}
关于java - 通过 Java 套接字错误传输文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12680443/