Java IO传输问题

时间:2013-04-19 08:25:23

标签: java io

为了重用所有IO而创建的FileUtils类。 我们将文件(随机数量)从一个Unix服务器传输到另一个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类。

谢谢

1 个答案:

答案 0 :(得分:1)

在关闭fos.flush()之前刷新文件输出流,我不确定它会解决您的问题,但值得一试:

  

public void flush()抛出IOException

     

刷新此输出流并强制执行任何缓冲的输出字节   写出来。冲洗的一般合同是称之为   指示,如果先前写入的任何字节已被缓冲   输出流的实现,这样的字节应该立即   写到他们预定的目的地。