2012-09-14 30 views
10

Nếu tôi muốn đọc từ "Words.txt" trong cùng một gói với lớp, tôi sẽ làm như thế nào? Làm đơn giản Scanner = new Scanner(new File("Words.txt")); trả về lỗi.Java - Lấy tập tin từ cùng một gói

+6

Hãy thử đặt file .txt trong thư mục gốc của dự án của bạn. Mặc dù các tệp văn bản có thể nằm trong cùng một thư mục với các tệp trong một gói cụ thể nhưng tệp này không thực sự làm cho chúng trở thành một phần của gói. Thay vào đó, bạn cần phải tải nó từ hệ thống tập tin (hoặc cách khác, từ các lọ hoặc chiến tranh.) – Marvo

+0

Điều này làm việc; cảm ơn! –

Trả lời

0

Giả sử các tập tin văn bản là trong cùng thư mục với các .class, chứ không phải là tập tin .java bạn có thể làm

Scanner scanner = new Scanner(getClass().getResourceAsStream("Words.txt")); 

gì bạn có sẽ tìm kiếm các tập tin trong thư mục làm việc hiện hành. Khi bạn đang xây dựng chương trình của bạn, đây thường là thư mục gốc của chương trình của bạn. Khi bạn chạy nó như một chương trình độc lập, nó thường là thư mục mà chương trình được bắt đầu.

+1

Tôi không biết nếu mọi câu trả lời chỉ dựa trên tên khác hoặc tên phương pháp chỉ thay đổi nhưng, nó là 'getClass(). GetResourceAsStream (" Words.txt ")' – Winter

+0

@Winter dựa trên bộ nhớ không ổn định của tôi mà tôi nghĩ. Cảm ơn bạn. –

15
InputStream is = MyClass.class.getResourceAsStream("Words.txt"); 
... 
+0

hoạt động nếu bạn nhập một JAR sử dụng mã này – kommradHomer

2
Scanner = new Scanner(new File("/path/to/Words.txt")); 

Đối số trong File() constructor, là đường dẫn tương đối với hệ thống máy ảo của bạn đang chạy trên, nó s không phụ thuộc vào gói của classe.

Nếu bạn words.txt của bạn là một nguồn lực đóng gói với chiến tranh của bạn, bạn có thể xem tại đây: Load resource from anywhere in classpath

0
Scanner scanner = new Scanner(getClass().getResourceAsInputStream("Words.txt")); 

String s = new String(); 

while(scanner.hasNextLine()){ 


     s = s + scanner.nextLine(); 


} 
+0

Bạn có nghĩa là 'getClass(). GetResourceAsStream (" Words.txt ")' – Winter

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