Java 文件传输卡在do while循环中

Java 文件传输卡在do while循环中,java,file,sockets,ftp,Java,File,Sockets,Ftp,您好,我正在尝试做一个小的客户端文件服务器应用程序,在其中可以传输任何类型的文件,包括.txt、.JPEG、.docx、.mp3和.wma。到目前为止,我只能随机进行转移。大多数情况下,文件未被传输;只有图像打印在客户端路径上 在我看来,文件似乎卡在了do-while循环中。请帮我把这个拿出来 服务器部件: // create socket ServerSocket serversock = new ServerSocket(444); while (true) {

您好,我正在尝试做一个小的客户端文件服务器应用程序,在其中可以传输任何类型的文件,包括.txt、.JPEG、.docx、.mp3和.wma。到目前为止,我只能随机进行转移。大多数情况下,文件未被传输;只有图像打印在客户端路径上

在我看来,文件似乎卡在了do-while循环中。请帮我把这个拿出来

服务器部件:

    // create socket
    ServerSocket serversock = new ServerSocket(444);

    while (true) {

        System.out.println("Waiting for client to connect...");
        Socket welcomesock = serversock.accept();
        System.out.println("Client has connected from: " + welcomesock.getInetAddress().getHostAddress());


        File myFile = new File ("C:\\temp\\New Stories.wma");

        if(!myFile.exists()){
            System.out.println("Filename does not exist");
            welcomesock.close();
        }

        else{
            byte [] mybytearray  = new byte [(int)myFile.length()];

            FileInputStream fis = new FileInputStream(myFile);

            BufferedInputStream bis = new BufferedInputStream(fis);

            bis.read(mybytearray,0,mybytearray.length);     

            OutputStream os = welcomesock.getOutputStream();

            System.out.println("Sending file");

            os.write(mybytearray,0,mybytearray.length);

            os.flush();

            os.close();

            }
        }</i>

您的服务器部件有一个无限循环:

while (true){
   ...
}
永远不会退出。您可能需要更改:

if(!myFile.exists()){
        System.out.println("Filename does not exist");
        welcomesock.close();
    }


当没有文件存在时,它将退出循环。

ok会处理它,但当我尝试下载时…文件似乎会增加到其实际大小…但是一旦我终止程序…文件大小为零..其工作兄弟..好兄弟..将勾选您的答案:
if(!myFile.exists()){
        System.out.println("Filename does not exist");
        welcomesock.close();
    }
if(!myFile.exists()){
        System.out.println("Filename does not exist");
        welcomesock.close();
        break;
    }