Java IO传输问题

Java IO传输问题,java,io,Java,Io,创建的FileUtils类可重复用于所有IO。 我们通过共享将文件(随机数量)从一台Unix服务器传输到另一台 我的问题: 随机有一个文件将以0kb文件的形式通过,但没有例外,并表示传输成功 我们使用的基本方法: resultCode = 0; FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(fileLocation + org

创建的FileUtils类可重复用于所有IO。 我们通过共享将文件(随机数量)从一台Unix服务器传输到另一台

我的问题: 随机有一个文件将以0kb文件的形式通过,但没有例外,并表示传输成功

我们使用的基本方法:

resultCode = 0;
    FileInputStream fis = null;
    FileOutputStream fos = null;
    try {
        fis = new FileInputStream(fileLocation + orginalFile);
        fos = new FileOutputStream(toFolder + destinationFile);
        byte[] buf = new byte[1024];
        int i = 0;
        while ((i = fis.read(buf)) != -1) {
            fos.write(buf, 0, i);
        }

        resultCode = 1;
    } catch (Exception e) {
        resultCode = 2;
        //our logging

    } finally {
        try {
            fis.close();
            fos.close();
        } catch (Exception e) {
//our logging
        }
    }

    return resultCode;
}
你知道是什么导致了这一切吗?每次单独的文件传输都会调用FileUtils类


谢谢您在关闭之前刷新文件输出流,我不确定它是否能解决您的问题,但值得一试:

public void flush()引发IOException

刷新此输出流并强制删除所有缓冲输出字节 写出来。同花顺的总合同是称其为 指示如果以前写入的任何字节已被缓冲 在实现输出流时,这样的字节应该立即 写到他们预定的目的地


关闭前刷新文件输出流,我不确定它是否能解决您的问题,但值得一试:

public void flush()引发IOException

刷新此输出流并强制删除所有缓冲输出字节 写出来。同花顺的总合同是称其为 指示如果以前写入的任何字节已被缓冲 在实现输出流时,这样的字节应该立即 写到他们预定的目的地


如何关闭流?}最后{尝试{fis.close();fos.close();}捕获(异常e){它正确传输所有文件,但随机一个文件为0kb,当我检查文件以传输其正确大小时,随机发生。我已在第一次发布时更新了代码。您的代码似乎很好。您确定没有收到任何异常??fis.close();fos.close();可能不是答案,但如果fis为空,则fos可能永远不会关闭…如何关闭流?}最后{try{fis.close();fos.close();}catch(异常e){它正确传输所有文件,但随机一个文件为0kb,当我检查文件以传输其正确大小时,随机发生。我已在第一次发布时更新了代码。您的代码似乎很好。您确定没有收到任何异常??fis.close();fos.close();可能不是答案,但如果fis为空,则fos可能永远不会关闭……好的,你能给我解释一下这将做什么吗?刷新?Regard我会尝试一下,谢谢所有人的回答并保持良好。好的,你能给我解释一下这将做什么吗?刷新?Regard我会尝试一下,谢谢一切为了答案,保持健康。