我是java的网络新手,我想实现一个文件传输系统,服务器从客户端(客户端计算机文件到服务器)下载文件我在网上搜索了一堆教程,但所有这些似乎都给了我一个错误或没有做任何事情,但我发现这里有10年的教程是链接: Click me我对它进行了一些小改动,使其更加稳定,但是当文件在服务器上下载文件仍被服务器使用时,我无法解决这个问题,我注意到循环没有当它现在完成时,退出并且不关闭文件流是代码:
客户端:
File fl = new File(splitedstreamcommand[2]);
FileInputStream fin = new FileInputStream(fl);
int i = -1;
while((i = fin.read()) != -1){
output.write(i);
output.flush();
//System.out.print((char) i);
}
fin.close();
输出是ObjectOutputStream
服务器:
File fl = new File("C:\\testfolder\\thetestfiledownloaded.txt");
//FileOutputStream fos = new FileOutputStream("C:\\testfolder\\thetestfiledownloaded.txt");
int i = -1;
if(fl.createNewFile()){
FileOutputStream fout = new FileOutputStream(fl);
while((i=input.read()) != -1){
//System.out.print((char) i);
fout.write(i);
System.out.println("Downloading....");
}
//System.out.println("Still downloading....");
fout.close();
//fin.close();
System.out.println("File downloaded.");
}
输入是一个ObjectInputStream,现在问题的循环就在服务器中,正在读取字节的while循环在完成读取时停止,但它不会退出循环并继续执行代码,如File Downloaded string应打印出来,文件仍在使用中。我认为这段代码因为它的旧代码而被破坏但是这是唯一一个因某些原因而对我有用的代码所以我该如何解决这个问题呢?谢谢。抱歉,如果你不明白告诉我,我可以尝试格式化它的错误问题格式和解释。