1

デバイスメモリに保存されているテキストファイルから大量のデータを取得する必要があります。また、ファイルから読み取ったデータ チャンクをサーバーに送信する必要があります。ファイルには膨大なデータが含まれているため、ファイルシステムからフェッチするときにデータをチャンクに分割したいと考えています。現在、私のロジックは一発でデータを取得しています。

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) {}

これは機能しますが、データ チャンク サイズを固定値に設定したいと考えています。そして、繰り返しファイルデータ全体を取得してサーバーに送信する必要があります。それを行う方法を教えてください。

4

2 に答える 2

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;
}
于 2012-08-28T17:04:30.727 に答える
0

InputStream.skip を使用して、ファイルの特定の部分にジャンプできます。

すでにどれだけ読んだかを知るために、インデックスをどこかに保管してください。

固定サイズのチャンク (数コス) を使用し、読み取り時にチャンク サイズ*インデックスにジャンプします。

于 2012-08-28T13:34:27.613 に答える