Tôi đang cố gắng sử dụng một chút mã tôi tìm thấy ở dưới cùng của this page. Đây là mã trong một lớp học mà tôi đã tạo cho nó:Java Hãy thử và bắt IOException Vấn đề
import java.io.LineNumberReader;
import java.io.FileReader;
import java.io.IOException;
public class LineCounter {
public static int countLines(String filename) throws IOException {
LineNumberReader reader = new LineNumberReader(new FileReader(filename));
int cnt = 0;
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {}
cnt = reader.getLineNumber();
reader.close();
return cnt;
}
}
Mục tiêu của tôi là để đếm số dòng của một tập tin văn bản, lưu trữ số đó là một số nguyên, sau đó sử dụng số nguyên trong lớp học chính của tôi. Trong lớp học chính của tôi, tôi đã thử một vài cách khác nhau để làm điều này xảy ra, nhưng (là một lập trình viên mới) tôi đang thiếu một cái gì đó. Đây là điều đầu tiên tôi đã thử:
String sFileName = "MyTextFile.txt";
private int lineCount = LineCounter.countLines(sFileName);
Với nỗ lực này, tôi nhận được lỗi "không được báo cáo ngoại lệ java.io.IOException; phải được khai báo hoặc khai báo." Tôi không hiểu tại sao tôi nhận được điều này bởi vì như tôi có thể thấy ngoại lệ được khai báo trong phương thức "countLines" của tôi. Tôi đã cố gắng sử dụng một khối try try ngay dưới bit cuối cùng của mã tôi đăng, nhưng điều đó đã không làm việc hoặc là (tôi không nghĩ rằng tôi đã làm nó mặc dù). Đây là nỗ lực bắt thử của tôi:
String sFileName = "MyTextFile.txt";
private int lineCount;{
try{
LineCounter.countLines(sFileName);
}
catch(IOException ex){
System.out.println (ex.toString());
System.out.println("Could not find file " + sFileName);
}
}
Hãy chỉ đường cho tôi! Cảm ơn trước sự giúp đỡ của bạn!
Câu trả lời là đúng về mặt kỹ thuật (OP chỉ đơn giản là quên gán giá trị cho tham chiếu), nhưng đó không phải là khối khởi tạo ** static **. Nó chỉ là một khối khởi tạo :) – BalusC
Mã bit đầu tiên của bạn hoạt động hoàn hảo! Tôi đã rất gần :) bit thứ hai của bạn của mã hoạt động quá, nhưng NetBeans nói với tôi trong khi vòng lặp trống. Chương trình vẫn biên dịch và chạy ok, vì vậy tôi đoán đó là chấp nhận được? – ubiquibacon
Nó chỉ đơn giản là bỏ qua nội dung.Bạn thực sự chỉ quan tâm đến số lượng các dòng. Bạn cũng có thể sử dụng 'BufferedReader' kết hợp với' int count' mà bạn tăng trong vòng lặp. – BalusC