我正在制作一个文件传输程序,我需要永远传输这个800kb的测试图片。显然,我不想花费30分钟来处理每一mb的数据,所以我很好奇是否有任何方法可以加速我的代码或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(),但这似乎等同于大约相同的事情。
答案 0 :(得分:8)
一次一个字节地读取文件并一次一个字节地通过网络发送任何语言都会很慢:)
考虑使用BufferedInputStream进行阅读,BufferedOutputStream进行写作。