以下は、 Java のファイル内の行 数から、テキスト ファイル内の行数をすばやくカウントするためのソリューションです。
ただし、「IOException」をスローせずに同じタスクを実行するメソッドを作成しようとしています。
元の解決策の下では、ネストされた try-catch ブロックを使用してこれを実行しようとしています <-- (これは通常実行されているか、眉をひそめているか、または簡単に回避できますか??) これは、指定されたファイル内の行数に関係なく 0 を返します (明らかに失敗)。
明確にするために、例外を含む元のメソッドをより適切に使用する方法についてアドバイスを求めているわけではないため、それを使用しているコンテキストはこの質問には関係ありません。
テキスト ファイルの行数をカウントし、例外をスローしないメソッドを書くのを手伝ってくれませんか? (つまり、潜在的なエラーを try-catch で処理します。)
マルティヌスによるオリジナルラインカウンター:
public static int countLines(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();
}
}
私の試み:
public int countLines(String fileName ) {
InputStream input = null;
try{
try{
input = new BufferedInputStream(new FileInputStream(fileName));
byte[] count = new byte[1024];
int lines = 0;
int forChar;
boolean empty = true;
while((forChar = input.read(count)) != -1){
empty = false;
for(int x = 0; x < forChar; x++){
if(count[x] == '\n'){
lines++;
}
}
}
return (!empty && lines == 0) ? 1 : lines + 1;
}
finally{
if(input != null)
input.close();
}
}
catch(IOException f){
int lines = 0;
return lines;
}
}