0

我在使用 Java 文件时遇到问题。

问题是:我正在尝试将文件(不仅是文本,任何类型)从套接字的一侧复制到另一侧。我使用 BufferedReader(逐字节)读取文件,然后使用 FileOutputStream 将它们写入文件。

它工作正常,但是当我打开文件时,它与 te original 不同,它正在将字节写入文本文件或类似文件。

一段代码:

        in = new BufferedInputStream(s.getInputStream());
        byte b[] = new byte[MAX_LENGTH];
        File f = new File(name);
        FileOutputStream fos = new FileOutputStream(name);
        for(int i = 0; i < segments; i++){
            in.read(b,i*MAX_LENGTH,MAX_LENGTH);
            fos.write(b);
        }

其中 s 是打开的套接字(工作正常),命名文件的名称并分段通过套接字发送的段数(MAX_LENGTH 的段)。

4

2 回答 2

0

你的复制代码是错误的。您忽略了 read() 返回的结果。记住这个循环。这是在 Java 中复制流的规范方法。

while ((count = in.read((buffer)) >= 0)
{
   out.write(buffer, 0, count);
}

与您的代码进行比较。将缓冲区设置为您喜欢的任何大小,越大越好。

于 2013-08-23T23:55:34.087 回答
0

您假设您可以MAX_LENGTH在每次读取调用时读取字节。情况可能并非如此。

read返回从流中实际读取的字节数。只需在每次循环迭代中将那么多字节写入输出流即可。

于 2013-08-23T21:20:51.933 回答