-9

我正在制作一个文件传输程序,它需要很长时间才能传输我制作的这张 800kb 测试图片。显然我不想为每 mb 的数据花费 30 分钟,所以我很好奇是否有任何方法可以加速我的代码或 Java。我听说过分配额外的 RAM,但从未研究过。

如果有人能为我的代码找到更好的算法,我将不胜感激,否则我可能不得不转向 C++ 或 C 并重试。

服务器代码块:

if(file.exists()){
    for(long l=0;l<file.length();l++){
        out.writeByte(fIS.read());
    }                   
}

其中 fIS 是 FileInputStream,out 是传出的 DataOutputStream。其余代码基本上是发送长度和标志,但如果需要,我可以添加。

客户代码:

b = new byte[len];
for(int x=0;x<len;x++){
    b[x] = dIS.readByte();
}
fOS.write(b);

其中 len 是预期从服务器读取的文件长度,b 是构成文件的字节数组,dIS 是来自服务器的输入流,fOS 是 FileOutputStream。

我也刚刚尝试将 Readers 和 readLine() 与 writeChars() 和 readChar() 一起使用,但这似乎等同于同一件事。

4

1 回答 1

8

一次读取一个字节并通过网络一次发送一个字节在任何语言中都会很慢:)

考虑使用BufferedInputStream进行读取,使用BufferedOutputStream进行写入。

于 2013-10-22T04:14:30.960 回答