Vì vậy, tôi chỉ chạy vào một vấn đề thú vị trong khi sử dụng lớp Scanner để đọc nội dung từ các tập tin. Về cơ bản, tôi đang cố gắng để đọc một số tập tin đầu ra được tạo ra bởi một ứng dụng phân tích cú pháp từ một thư mục để tính toán một số số liệu chính xác.Hành vi lạ với máy quét java đọc tập tin
Về cơ bản, mã của tôi chỉ duyệt qua từng tệp trong thư mục và mở chúng bằng máy quét để xử lý nội dung. Vì lý do gì đó, một vài tệp (tất cả mã hóa UTF-8) không được đọc bởi Máy quét. Mặc dù các tệp không trống, scanner.hasNextLine() sẽ trả về false khi cuộc gọi đầu tiên của nó (tôi đã mở trình gỡ rối và quan sát điều này). Tôi đã khởi tạo máy quét trực tiếp với các đối tượng File mỗi lần (các đối tượng tập tin đã được tạo thành công). ví dụ:
File file = new File(pathName);
...
Scanner scanner = new Scanner(file);
Tôi đã thử một vài điều, và cuối cùng đã có thể khắc phục vấn đề này bằng cách khởi tạo các máy quét theo cách sau:
Scanner scanner = new Scanner(new FileInputStream(file));
Mặc dù tôi rất vui khi đã giải quyết vấn đề , Tôi vẫn tò mò về những gì có thể đã xảy ra để gây ra vấn đề trước đây. Bất kỳ ý tưởng? Cám ơn rất nhiều!
Tôi đã hack một số thứ lại với nhau và gặp sự cố chính xác của bạn. FileInputStream để giải cứu! – masher