我正在制作一个文件传输程序,我需要永远传输这个800kb的测试图片.显然,我不想花费30分钟来处理每一mb的数据,所以我很好奇是否有任何方法可以加速我的代码或Java.我听说过分配额外的RAM,但从未调查过.
如果有人能为我的代码找到一个更好的算法,那么我可能不得不步入C++或C并再试一次.
服务器代码块:
if(file.exists()){
for(long l=0;l<file.length();l++){
out.writeByte(fIS.read());
}
}
Run Code Online (Sandbox Code Playgroud)
其中fIS是FileInputStream,out是传出的DataOutputStream.其余的代码基本上是发送长度和标志,但我可以添加,如果请求.
客户代码:
b = new byte[len];
for(int x=0;x<len;x++){
b[x] = dIS.readByte();
}
fOS.write(b);
Run Code Online (Sandbox Code Playgroud)
其中len是服务器所需文件的读取长度,b是组成文件的字节数组,dIS是服务器的输入流,fOS是FileOutputStream.
我也尝试使用Readers和readLine()与writeChars()和readChar(),但这似乎等同于大约相同的事情.