cuốn sách gpt4 ai đã làm

Java 说 FileNotFoundException 但文件存在

In lại Tác giả: Vũ trụ không gian 更新时间:2023-11-04 09:55:50 25 4
mua khóa gpt4 Nike

Tôi có một bài tập trong lớp khoa học máy tính yêu cầu đọc một tệp chứa nhiều điểm kiểm tra và yêu cầu tôi tính tổng và tính trung bình cộng của chúng. Mặc dù việc tính tổng và tính trung bình rất dễ dàng nhưng tôi lại gặp khó khăn khi đọc tệp. Thầy bảo dùng ngữ pháp này

Điểm của máy quét = Máy quét mới(Tệp mới("scores.dat"));

Tuy nhiên, điều này ném Tệp không tìm thấy ngoại lệ, nhưng tôi kiểm tra đi kiểm tra lại xem tệp có tồn tại trong thư mục hiện tại hay không, sau đó tôi nghĩ nó phải làm gì đó với quyền. Tôi đã thay đổi quyền đọc và ghi cho mọi người nhưng nó vẫn không hoạt động và vẫn báo lỗi. Có ai biết tại sao điều này xảy ra?

EDIT: Nó thực sự trỏ đến một thư mục, tuy nhiên, tôi đã sửa nó. Hiện nay tập tin.exists() trở lại ĐÚNG VẬY, nhưng khi tôi cố gắng đặt nó vào Máy quét khi nào nó sẽ ném Tệp không tìm thấy ngoại lệ

Đây là tất cả mã của tôi

nhập java.util.Scanner;
nhập java.io.*;
lớp công khai readInt{
public static void main(String args[]){
Tệp tệp = Tệp mới("lines.txt");
System.out.println(file.exists());
Quét máy quét = Máy quét mới (tệp);
}
}

câu trả lời hay nhất

Trong nhiều trường hợp, điều này có thể bị ném vào thời gian chạy Tệp không tìm thấy ngoại lệ.

  1. Tệp được chỉ định không tồn tại. Điều này có thể xảy ra vì nhiều lý do, bao gồm:

    • Tên đường dẫn sai hoàn toàn
    • Tên đường dẫn trông có vẻ đúng nhưng thực chất lại sai vì nó chứa các ký tự không in được (hoặc từ đồng âm) mà bạn không để ý
    • Tên đường dẫn là đường dẫn tương đối, liên quan đến ứng dụng đang chạythật sựthư mục hiện tại, nó không thể được phân tích cú pháp chính xác. Điều này thường xảy ra vì thư mục hiện tại của ứng dụng không phải là thư mục bạn mong đợi hoặc giả định.
    • Đường dẫn tệp bị hỏng; ví dụ: tên thư mục của đường dẫn không chính xác, liên kết tượng trưng trên đường dẫn bị hỏng hoặc có vấn đề về quyền với một trong các thành phần đường dẫn.
  2. Tệp được chỉ định thực sự là một thư mục.

  3. Vì lý do nào đó, không thể mở tệp được chỉ định để đọc.

Tin tốt là vấn đề sẽkhông thể tránh khỏilà một trong những câu hỏi trên. Đó chỉ là vấn đề xác định cái nào. Dưới đây là một số điều bạn có thể thử:

  • gọi tập tin.exists()sẽ cho bạn biết liệu có tồn tại bất kỳ đối tượng hệ thống tập tin nào có tên/tên đường dẫn đã cho hay không.

  • gọi tập tin.isDirectory()Sẽ kiểm tra xem nó có phải là một thư mục hay không.

  • gọi tập tin.canRead()Sẽ kiểm tra xem nó có phải là một tập tin có thể đọc được hay không.

  • Dòng này sẽ cho bạn biết thư mục hiện tại là gì:

      System.out.println(Tệp mới(".").getAbsolutePath());
  • Dòng này sẽ in ra tên đường dẫn theo cách giúp dễ dàng phát hiện những thứ như khoảng trắng ở đầu hoặc cuối không mong muốn:

      System.out.println("Đường dẫn là '" + path + "'");

    Tìm kiếm các khoảng trắng, dòng mới không mong muốn, v.v. trong đầu ra.

Hóa ra mã mẫu của bạn có lỗi biên dịch.

Tôi đã chạy mã của bạn và không nhận được khiếu nại nào từ Netbeans, chỉ có thông báo ngoại lệ sau:

Ngoại lệ trong luồng "chính" java.lang.RuntimeException: Mã nguồn không thể biên dịch - ngoại lệ chưa được báo cáo java.io.FileNotFoundException phải bị bắt hoặc được tuyên bố sẽ bị ném;

Nếu bạn thay đổi mã của mình thành mã sau, nó sẽ giải quyếtNêncâu hỏi.

public static void main(String[] args) ném FileNotFoundException {    
Tệp tệp = Tệp mới ("scores.dat");
System.out.println(file.exists());
Quét máy quét = Máy quét mới (tệp);
}

解释:Máy quét (Tệp) Hàm tạo được khai báo là ném Tệp không tìm thấy ngoại lệ bất thường. (Máy quét có thể không mở được tệp.) Bây giờ Tệp không tìm thấy ngoại lệ 是一个Đã kiểm tra ngoại lệ. Điều này có nghĩa là các phương thức có thể ném ngoại lệ phải bắt ngoại lệ hoặc khai báo nó trong mệnh đề ném. Cách khắc phục ở trên sử dụng phương pháp sau.

Về việc Java nói FileNotFoundException nhưng tệp vẫn tồn tại, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/54172828/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress