用java在同一台机器上从客户端复制文件到服务器?
我正在将一个300 MB的大文件从客户端复制到服务器。我在本地设置了客户端和服务器weblogic,但传输速度太慢。只有当我的服务器与客户机在同一台机器上时,才有办法提高速度吗?以下是我正在使用的代码:用java在同一台机器上从客户端复制文件到服务器?,java,file,weblogic,jdk6,Java,File,Weblogic,Jdk6,我正在将一个300 MB的大文件从客户端复制到服务器。我在本地设置了客户端和服务器weblogic,但传输速度太慢。只有当我的服务器与客户机在同一台机器上时,才有办法提高速度吗?以下是我正在使用的代码: boolean decodeStream = false; bytesRead = istream.read(buffer, 0, BUFFER_SIZE); if (bytesRead != -1 && Base64.isArrayByteBase64(buffer)) {
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);
}
}
您可以通过使用缓冲io来提高速度
OutputStream bos = new BufferedOutputStream(FileOutputStream(fileNamePath, !createFile));
istream = new BufferedInputStream(file.getInputStream());
默认情况下,JVM使用8kB的缓冲区。我不知道您的缓冲区大小。另请参阅Base64性能说明: