我正在编写从客户端上传文件到我的服务器的代码,其性能没有我想的那么快。
我有正在进行文件传输的当前代码片段,我想知道如何加快传输.
很抱歉有这么多代码:
InputStream fileItemInputStream ;
OutputStream saveFileStream;
int[] buffer;
while (fileItemInputStream.available() > 0) {
buffer = Util.getBytesFromStream(fileItemInputStream);
Util.writeIntArrToStream(saveFileStream, buffer);
}
saveFileStream.close();
fileItemInputStream.close();Util方法如下:
public static int[] getBytesFromStream(InputStream in, int size) throws IOException {
int[] b = new int[size];
int count = 0;
while (count < size) {
b[count++] = in.read();
}
return b;
}以及:
public static void writeIntArrToStream(OutputStream out, int[] arrToWrite) throws IOException {
for (int i = 0; i < arrToWrite.length; i++) {
out.write(arrToWrite[i]);
}
}发布于 2008-11-10 07:18:46
一次读取一个字节将是可怕的低效。您还依赖于available,这很少是一个好主意。(如果当前没有可用的字节,则返回0,但可能会有更多的字节可用。)
这是复制流的正确代码类型:
public void copyStream(InputStream input, OutputStream output) throws IOException
{
byte[] buffer = new byte[32*1024];
int bytesRead;
while ((bytesRead = input.read(buffer, 0, buffer.length)) > 0)
{
output.write(buffer, 0, bytesRead);
}
}(调用方应关闭两个流。)
https://stackoverflow.com/questions/277260
复制相似问题