2011-12-25 49 views
8

Tôi có câu hỏi khá ngớ ngẩn, nhưng tôi đã không thể tìm một giải pháp cho việc này:Java đường dẫn tập tin trong Linux

khi tôi cố gắng và đọc một file để có được một "lỗi tập tin không tìm thấy" là thời gian chạy. Nó biên dịch tập tin mặc dù.

Tôi đang trên Linux, vì vậy tôi sử dụng một cái gì đó tuyên bố như:

Scanner s = new Scanner(new File("home/me/java/ex.txt")); 

và nó mang lại cho tôi một rror runtime:

/home/me/javaException in thread "main" java.io.FileNotFoundException: home/me/java/ex.txt (No such file or directory) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(FileInputStream.java:137) 
at java.util.Scanner.<init>(Scanner.java:653) 
at test.main(test.java:14) 

tôi đã cố gắng thay đổi tất cả mọi thứ có thể dọc theo dòng tên tập tin, nhưng không có gì có vẻ hiệu quả.

Bất kỳ manh mối nào về lý do tại sao điều này xảy ra? java tìm tập tin theo mặc định ở đâu?

+1

thông báo vị trí tệp của bạn không được tìm thấy. tôi đoán đường dẫn của bạn là "/home/me/java/ex.txt" trong hệ thống linux. –

+0

Giá trị của ['user.home'] (http://pscode.org/prop/all.html?prop=user.home&format=TSV) trên hệ thống đó là gì? –

Trả lời

14

Có vẻ như bạn đang thiếu dấu gạch chéo hàng đầu. Có lẽ thử:

Scanner s = new Scanner(new File("/home/me/java/ex.txt")); 

(như là nơi có vẻ cho các tập tin theo mặc định, nó là nơi mà các JVM đang chạy từ các đường dẫn liên quan như một bạn có trong câu hỏi của bạn)

+1

Cảm ơn Todd. Nó đã được giải quyết vấn đề! Tôi ngớ ngẩn quá! – AJW

10

Tôi nghĩ Todd là đúng , nhưng tôi nghĩ có một điều khác bạn nên cân nhắc. Bạn có thể nhận được thư mục chính một cách đáng tin cậy từ JVM khi chạy, và sau đó bạn có thể tạo các đối tượng tệp liên quan đến vị trí đó. Nó không phải là rắc rối nhiều hơn, và một cái gì đó của nó, bạn sẽ đánh giá cao nếu bạn đã từng di chuyển đến một máy tính hoặc hệ điều hành.

File homedir = new File(System.getProperty("user.home")); 
File fileToRead = new File(homedir, "java/ex.txt"); 
+3

Nếu chuyển sang * bất kỳ * hệ điều hành nào khác, tôi đề nghị hoán đổi '"/"' trong đường dẫn cho 'System.getProperty (" file.separator ")' hoặc luân phiên xây dựng đường dẫn trong các phần bằng cách sử dụng hàm tạo đó. Nếu không, +1 –

+0

Cảm ơn hóa đơn cho mẹo tuyệt vời đó. Tôi sẽ thực hiện điều này ngay lập tức. – AJW

+3

Nếu bạn đang nhắm mục tiêu Unix, Linux, OS X hoặc cửa sổ, dấu gạch chéo sẽ hoạt động. Có, ngay cả Windows. – Bill

Các vấn đề liên quan