-1

私はcsvファイルを持っています。csvにいくつの行があるかを教えてくれる関数をJavaで書きたいと思います。誰かがこれを達成するのを手伝ってくれませんか。

csv の形式は次のとおりです。

"Time","Actual","Time","Expected","Time","Status"
"2012-09-01 00:00:00",580.543,"2012-09-01 00:00:00",570.761,"2012-09-01 01:00:00",0
"2012-09-01 01:00:00",646.703,"2012-09-01 01:00:00",672.926,"2012-09-01 02:00:00",0
"2012-09-01 02:00:00",680.705,"2012-09-01 02:00:00",687.784,"2012-09-01 03:00:00",0
"2012-09-01 03:00:00",661.968,"2012-09-01 03:00:00",702.436,"2012-09-01 04:00:00",0
4

5 に答える 5

8

次の関数は、任意のファイルの行数をカウントします...

public int count(String filename) throws IOException {
    InputStream is = new BufferedInputStream(new FileInputStream(filename));
    try {
    byte[] c = new byte[1024];
    int count = 0;
    int readChars = 0;
    boolean empty = true;
    while ((readChars = is.read(c)) != -1) {
        empty = false;
        for (int i = 0; i < readChars; ++i) {
            if (c[i] == '\n') {
                ++count;
            }
        }
    }
    return (count == 0 && !empty) ? 1 : count;
    } finally {
    is.close();
   }
}
于 2013-08-02T05:38:27.430 に答える
3

これを試して、

BufferedReader bufferedReader = new BufferedReader(new FileReader(FILENAME));
     String input;
     int count = 0;
     while((input = bufferedReader.readLine()) != null)
     {
         count++;
     }

     System.out.println("Count : "+count);
于 2013-08-02T05:38:23.727 に答える
2

行数を数えて 1 を引くことができます。BufferedReader.readLine(); を何回呼び出せるか数えてください。空行を無視したい場合があります。

于 2013-08-02T05:36:42.463 に答える
1

正規表現パターンを使用して改行を一致させ、一致を数えますか?

Pattern patt = Pattern.compile("\\n");
Matcher m = patt.matcher( text);
//
int newlines = 0;
while (m.find()) {
    newlines++;
}

Count(newlines) は、個別の行数より 1 少なくなります。最初の行はデータではなくヘッダーであることに注意してください。

于 2013-08-02T05:35:25.457 に答える
0

フィールドが複数の行に分割されていないことが確実な場合は、改行で区切られたすべての行を読み取ることができます。それ以外の場合は、ここに記載されているライブラリのいずれかを使用してください。

于 2013-08-02T05:37:11.527 に答える