ホームページ >Java >&#&チュートリアル >大きな Java ファイルの行を効率的にカウントするにはどうすればよいですか?

大きな Java ファイルの行を効率的にカウントするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-26 09:30:11237ブラウズ

How Can I Efficiently Count Lines in a Large Java File?

Java でファイル内の行を効率的にカウントする

問題:

大きなファイルを扱う場合データ ファイルの場合、多くの場合、ファイル内の行数を決定する必要があります。最後に到達するまでファイルを 1 行ずつ読み取ることは可能ですが、この方法は時間がかかり、非効率的になる可能性があります。

解決策:

より効率的な方法Java でファイル内の行数をカウントする方法は、次のコードを使用することです:

public static int countLines(String filename) throws IOException {
    InputStream is = new BufferedInputStream(new FileInputStream(filename));
    try {
        byte[] c = new byte[1024];
        int readChars = is.read(c);
        if (readChars == -1) {
            // bail out if nothing to read
            return 0;
        }
        // make it easy for the optimizer to tune this loop
        int count = 0;
        while (readChars == 1024) {
            for (int i = 0; i < 1024;) {
                if (c[i++] == '\n') {
                    ++count;
                }
            }
            readChars = is.read(c);
        }
        // count remaining characters
        while (readChars != -1) {
            for (int i = 0; i < readChars; ++i) {
                if (c[i] == '\n') {
                    ++count;
                }
            }
            readChars = is.read(c);
        }
        return count == 0 ? 1 : count;
    } finally {
        is.close();
    }
}

このコードは、特に大きなファイルの場合、ファイルを 1 行ずつ読み取る単純なアプローチ。バッファリングされた入力ストリームと最適化されたループの使用により、ファイル データを効率的に処理し、不必要な読み取り操作を最小限に抑えることができます。

以上が大きな Java ファイルの行を効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。