0

クライアントからサーバーに 300 MB の大きなファイルをコピーしています。クライアントとサーバー (weblogic) の両方をローカルにセットアップしましたが、それでも転送が遅すぎます。サーバーがクライアントと同じマシンにある場合にのみ、速度を上げる方法はありますか? 私が使用しているコードは次のとおりです。

boolean decodeStream = false;
bytesRead = istream.read(buffer, 0, BUFFER_SIZE);
if (bytesRead != -1 && Base64.isArrayByteBase64(buffer))
{
  decodeStream = true;
}
istream.close();

//write the file to the file specified
// if createFile then create a new file
// otherwise append.
OutputStream bos = new FileOutputStream(fileNamePath, !createFile); // second parameter, if true then append...
istream         = file.getInputStream();

if (decodeStream)
{
  // File is encoded, decode it.
  Logger.log("(perform) Decoding file: " + fileNamePath, _moduleName, Logger.DEBUG);

  // Stream came in encoded, so we need to decode it.
  Base64.InputStream stream = new Base64.InputStream(istream);

  while ((bytesRead = stream.read(buffer, 0, BUFFER_SIZE)) != -1)
  {
    bos.write(buffer, 0, bytesRead);
  }

  stream.close();
}
else
{
  // File is not encoded.
  while ((bytesRead = istream.read(buffer, 0, BUFFER_SIZE)) != -1)
  {
    bos.write(buffer, 0, bytesRead);
  }
}
4

1 に答える 1

0

バッファリングされた io を使用して速度を上げることができる場合があります

OutputStream bos = new BufferedOutputStream(FileOutputStream(fileNamePath, !createFile));
istream         = new BufferedInputStream(file.getInputStream());

デフォルトでは、JVM は 8kB のバッファを使用します。あなたの BUFFER_SIZE が何であるかわかりません。

于 2015-02-03T14:37:11.137 に答える