Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java套接字文件传输无法正常工作_Java_Sockets_File Transfer - Fatal编程技术网

Java套接字文件传输无法正常工作

Java套接字文件传输无法正常工作,java,sockets,file-transfer,Java,Sockets,File Transfer,我是java网络新手,我想实现一个文件传输系统,服务器从客户端下载一个文件(客户端计算机文件到服务器)。我在互联网上搜索了一大堆教程,但它们似乎都给了我一个错误或什么都不做,但我发现10年的教程在这里工作,链接是: 我对它做了一些小改动,使它更稳定,但有一个问题我无法解决,当文件下载到服务器上时,服务器仍在使用该文件,我注意到循环不会退出,也不会关闭文件流。现在,代码如下: 客户: File fl = new File(splitedstreamcommand[2]); FileInputStr

我是java网络新手,我想实现一个文件传输系统,服务器从客户端下载一个文件(客户端计算机文件到服务器)。我在互联网上搜索了一大堆教程,但它们似乎都给了我一个错误或什么都不做,但我发现10年的教程在这里工作,链接是: 我对它做了一些小改动,使它更稳定,但有一个问题我无法解决,当文件下载到服务器上时,服务器仍在使用该文件,我注意到循环不会退出,也不会关闭文件流。现在,代码如下:

客户:

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循环正在读取字节,它在完成读取时停止,但它不会退出循环并继续执行代码,如文件下载字符串,该字符串应打印出来,文件仍在使用中。我认为这段代码被破坏了,因为它太旧了,但这是唯一一段出于某种原因对我起作用的代码,所以我如何解决这个问题?谢谢抱歉,问题格式和解释不正确。如果您不理解,请告诉我,我可以尝试设置格式。

关闭“输出”时会发生什么情况在客户机上?如果我关闭客户机上的输出,它会在服务器上返回EOFEException错误。我修复了问题,但现在很混乱。我将尝试格式化代码,然后发布答案。关闭“输出”时会发生什么情况在客户机上?如果我关闭客户机上的输出,它会在服务器上返回EOFEException错误。我修复了这个问题,但现在很混乱。我将尝试格式化代码,然后发布答案