0

コードを使用して、URL からファイルにコンテンツを書き込みます。ここにコードがあります

public void copyFileFromUrl(URL source, File target) throws IOException {
    try {

        if (!target.exists()) {

            target.createNewFile();
            log.debug("target file created for " + target);

            log.debug("downloading source ....");
            InputStream in = source.openStream();
            OutputStream out = new FileOutputStream(target);

            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }

        } else {
            log.debug("skipping creation of asset");
        }

    } catch (Exception e) {
        log.debug("trouble with " + target);
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        in.close();
        out.close();
    }

}

今何が起こっているのか、ファイルサイズが 40kb だとします。書き込み中に接続のリセットまたは何らかの例外が発生した場合、すべてのコンテンツが完全に書き込まれないか、何も書き込まれず、サイズが 0 以下のファイルがあります。 URLの元のファイルより。

ファイル全体がURLから完全に書き込まれることを保証する方法はありますか?書き込み中に何らかの例外が発生した場合は、3回書き込みを試み、3回目の試行後にファイルが存在しないというメッセージをログに記録します完全に書かれた?

ありがとう

4

2 に答える 2