java - 通过 Java 套接字错误传输文件

标签 java file sockets tcp transfer

我正在尝试将 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/

相关文章:

java - 使用套接字手动发送 Keep-Alive 数据包

java - 我可以设置默认的全局 Java 套接字超时吗?

c - 尝试从 wininet HTTP 连接获取套接字

java - Log4j2 - 未找到 Spring 测试记录器

java - JNLP 已经初始化,带有icedtea6-plugin 的NullPointerException?

java - getSerializableExtra 返回 null

perl - 为什么 Perl 文件测试运算符 "-l"检测不到符号链接(symbolic link)?

java - 显示 URL 处的文件

Python - 对于文本文件中的每个值?

c - 用 "argv[2]"替换一个字符