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);
    }