如何从box-java-sdk中大块读取CSV文件内容

山姆

嗨,我正在使用[box] [1]

[1]:https//www.box.com/存储我的csv文件。文件大小为2GB。现在,我想处理文件的每个记录,并根据文件内容进行一些操作。

我做了什么:

public class BoxConnector {

public static void main(String[] args) throws IOException {

    BoxAPIConnection api = new BoxAPIConnection("My access token");

    BoxFolder rootFolder = BoxFolder.getRootFolder(api);
    for (BoxItem.Info itemInfo : rootFolder) {
        System.out.format("[%s] %s\n", itemInfo.getID(), itemInfo.getName());
        BoxFile file = new BoxFile(api, itemInfo.getID());
        BoxFile.Info info = file.getInfo();
        try {
            System.out.println(info.getSize());

            File tmpFile = File.createTempFile("file", "temp");
            FileOutputStream fsTmpStrem = new FileOutputStream(tmpFile);
            long blockSize = 1000;
            long roundChunks = info.getSize() / blockSize;
            long startByteRange = 0;
            long endByteRange = blockSize;
            for (long start = 0; start < roundChunks; start++) {

                file.downloadRange(fsTmpStrem, startByteRange, endByteRange);
                processFile(tmpFile);
                startByteRange = endByteRange;
                endByteRange = endByteRange + blockSize;
            }
            //last download block
            file.downloadRange(fsTmpStrem, blockSize * roundChunks, info.getSize());
            processFile(tmpFile);

        } finally {

        }
    }
}

private static void processFile(File tmpFile) throws IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(tmpFile)));
    String line = null;
    while ((line = br.readLine()) != null) {
         System.out.println("Process line record");
    }
    br.close();
    //after each process lets delete the temp file
    tmpFile.delete();

}

}

有了这个,我就能得到我已经上传到box.com的文件名。现在,我想阅读每个记录和过程。但是,我需要一个允许我访问文件块的API。

这个文件会按照开始和结束字节范围标志定义的块进行下载。但是由于块下载,我的记录很少破。意思是我没有完整的说法,下面是我的记录

16F11C78-D004-4600-8D28-445C087D2A7D 
31C99F3D-D4C7-418A-9ACC-D9A382BCD53A 
30C1AA92-B5B7-4ABF-A631-A8C150D90C4F
D9FC1DBF-B309-4BB1-8955-D9F48F643E97

我正进入(状态

    16F11C78-D004-4600-8D28-445C087D2A7D 
    31C99F3D-D4C7-418A-9ACC-D9A382BCD53A 
    30C1AA92-B5B7-4ABF-A631-A8C150D90C4F
    D9FC1DBF-

i.e. B309-4BB1-8955-D9F48F643E97最后一行缺少一部分。我应该如何使用下载API进行管理?

曼扎(Murtza Manzur)

目前,Box API无法做到这一点。您只能下载整个文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中每次从不同的偏移量读取大块的String大文件?

Java读取CSV文件,内容未写入新的CSV文件

如何从CSV文件读取可读的内容?

如何编写Java线程池程序以读取文件内容?

如何使用Java读取(.bib)文件格式的内容

如何在不指定共享类型的情况下使用Box Java SDK创建共享链接?

如何读取多个CSV文件以Java中的数据排序?

如何使用java读取CSV文件中的特定列?

如何替换Java中大文件的第一行?

Java:如何从文件读取密码?

BOX API上传文件Java

如何在AngularJS中读取csv文件内容?

如何读取.CSV文件的标题行以外的所有内容?

Box Java SDK - 在公开文档中找不到 404 文件

Box Java SDK 设置标签到文件夹

Box Java SDK-无法下载/删除文件的特定版本

Box API Java:如何将文件移动到另一个文件夹?

Java扫描器读取CSV文件时读取的内容不存在

如何在Java中读取多部分文件输入流的内容

如何读取使用Java PDF文件两个词之间的多行内容?

如何从Java文件中以字符串形式读取XML内容

如何使用Java读取服务器上存储的文件内容?

从csv文件Java读取数据

如何从CSV文件读取

如何在Java中将.csv文件读取到数组列表中?

Java Spring:如何有效地从CSV文件读取和保存大量数据?

如何从Java中的大csv文件中随机读取整行(包括可能的换行符)

如何在Java中读取具有不同格式的多个csv文件

在Java中读取csv文件时如何跳过空白单元格?