Java 如何提高以下代码的文件传输速度
上述程序将文件从一台电脑传输到另一台电脑。Java 如何提高以下代码的文件传输速度,java,Java,上述程序将文件从一台电脑传输到另一台电脑。 但是,文件传输速度较低 是否有提高文件传输速度的选项?使用循环和较小的缓冲区。这将大大改善延迟: import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; imp
但是,文件传输速度
较低
是否有提高文件传输速度的选项?使用循环和较小的缓冲区。这将大大改善延迟:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main (String [] args ) throws IOException {
ServerSocket serverSocket = new ServerSocket(15123);
Socket socket = serverSocket.accept();
System.out.println("Accepted connection : " + socket);
File transferFile = new File ("D:\\workspace\\SpringRmiClient.rar");
byte [] bytearray = new byte [(int)transferFile.length()];
FileInputStream fin = new FileInputStream(transferFile);
BufferedInputStream bin = new BufferedInputStream(fin);
bin.read(bytearray,0,bytearray.length);
OutputStream os = socket.getOutputStream();
System.out.println("Sending Files...");
os.write(bytearray,0,bytearray.length);
os.flush();
socket.close();
System.out.println("File transfer complete");
}
}
目前,在读取整个文件之前,您不会传输任何内容。通过这种方式,您几乎立即传输第一个字节,并且在读取它们后立即传输最后一个字节
您当前的代码还包括:
- 仅适用于文件大小投资于更快的网络;-)顺便说一句,不能保证
将读取整个文件。我试过了,但速度太慢了。你能建议另一个想法吗?与什么相比,速度太慢了?你有任何证据表明它能像你期望的那样快吗?bin.read(bytearray,0,bytearray.length)
byte[] buffer = new byte[8192]; int count; while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); }