Java 文件传输卡在do while循环中
您好,我正在尝试做一个小的客户端文件服务器应用程序,在其中可以传输任何类型的文件,包括.txt、.JPEG、.docx、.mp3和.wma。到目前为止,我只能随机进行转移。大多数情况下,文件未被传输;只有图像打印在客户端路径上 在我看来,文件似乎卡在了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) {
// 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;
}