在J2ME中以块的形式下载数据

时间:2012-08-28 13:30:56

标签: java multithreading java-me inputstream

我必须从文本文件中获取更大量的数据,文件存储在设备内存中。并且需要将从文件中读取的数据块发送到服务器。由于文件有大量数据,我想在从文件系统获取时将数据分成块。目前我的逻辑是一次性获取数据。

try {
            fc = (FileConnection) Connector.open(path, Connector.READ);

            if (fc.exists()) {
                int size = (int) fc.fileSize();
                is = fc.openInputStream();
                byte bytes[] = new byte[size];
                is.read(bytes, 0, size);
                //System.out.println("Text: " + str);

            }
        } catch (Exception ioe) {}

这有效,但我想将数据块大小设置为固定值。然后迭代地它应该获取整个文件数据并发送到服务器。你能告诉我一个方法吗?

2 个答案:

答案 0 :(得分:2)

我使用了以下实用程序方法:

public static int copy (InputStream is, OutputStream out) throws IOException {
    byte [] buff = new byte[1024];
    int len = is.read(buff);
    int total = 0;

    while (len > 0) {
        total += len;
        out.write(buff, 0, len);
        len = is.read(buff);
    }

    return total;
}

答案 1 :(得分:0)

您可以使用InputStream.skip跳转到文件的特定部分。

在某处保留一个索引以了解您已阅读了多少。

使用固定大小的块(几个Kos),并在阅读时跳转到chunk-size *索引。