批量上传期间关闭流的最佳方法

时间:2019-01-14 23:59:28

标签: java java-io box-api

我正在通过Box Java API将批量文件(例如50000)上传到Box。为此,我们将uploadFile方法调用50000次。该方法还创建并关闭文件输入流。

有没有办法让流保持打开状态,直到完成大容量加载?即使我在finally块中关闭了流,每次调用该方法时,它也会将其关闭。

private static String uploadFile(String pathFileName, BoxAPIConnection api, BoxFolder folder) {
    boolean fileExists = false;
    String fileId = null;
    FileInputStream stream = null;
    log.debug("Invoked uploadFileAsBoxAppUser-uploadFile :" + pathFileName + ":" + api + ":" + folder);
    try {
        String fileName = pathFileName.substring(pathFileName.lastIndexOf("\\") + 1, pathFileName.length());
        log.debug("fileName :" + fileName);

        for (BoxItem.Info itemInfo : folder) {
            if (itemInfo instanceof BoxFile.Info) {
                BoxFile.Info fileInfo = (BoxFile.Info) itemInfo;
                if (fileName.equals(fileInfo.getName())) {
                    fileExists = true;
                    fileId = fileInfo.getID();
                    log.debug("fileExists in Destination box Folder fileID " + fileId);
                }
            }
        }

        if (!fileExists) {
            log.debug("uploading new file: " + fileName);
            stream = new FileInputStream(pathFileName);
            BoxFile.Info boxInfo = folder.uploadFile(stream, pathFileName);
            fileId = boxInfo.getID();
        } else {
            log.debug("uploading new version of file: " + fileName);
            BoxFile file = new BoxFile(api, fileId);
            stream = new FileInputStream(pathFileName);
            file.uploadVersion(stream);
        }
    } catch (IOException e) {
        log.debug("Exception in uploadFileAsBoxAppUser :" + e);
    }
    finally {
        if (stream != null)
            try {
                stream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
    return fileId;
}

0 个答案:

没有答案