Jeśli chcę przeczytać "Words.txt", który jest w tym samym pakiecie co klasa, w jaki sposób mogę to zrobić? Po prostu Scanner = new Scanner(new File("Words.txt"));
zwraca błąd.Java - Pobieranie pliku z tego samego pakietu
Odpowiedz
Zakładając, że plik tekstowy jest w tym samym katalogu co .class
zamiast pliku .java
można zrobić
Scanner scanner = new Scanner(getClass().getResourceAsStream("Words.txt"));
Co trzeba będzie szukać pliku w bieżącym katalogu roboczym. Kiedy budujesz swój program, jest to zazwyczaj katalog główny twojego programu. Kiedy uruchamiasz go jako samodzielny program, zwykle jest to katalog, z którego program został uruchomiony.
Nie wiem, czy każda odpowiedź jest po prostu oparta na innym, czy też nazwa metody właśnie się zmieniła, ale jest to 'getClass(). GetResourceAsStream (" Words.txt ")' – Winter
@Winter oparty na mojej łuszczącej się pamięci. Dziękuję Ci. –
InputStream is = MyClass.class.getResourceAsStream("Words.txt");
...
działa, jeśli importujesz plik JAR, który używa tego kodu – kommradHomer
Scanner = new Scanner(new File("/path/to/Words.txt"));
Argument w pliku() konstruktora, jest względna ścieżka do systemu swoją VM jest uruchomiona, to s nie zależy od pakietu Classe użytkownika.
Jeśli Twój words.txt jest zasobem pakowane z wojną można zobaczyć tutaj: Load resource from anywhere in classpath
Scanner scanner = new Scanner(getClass().getResourceAsInputStream("Words.txt"));
String s = new String();
while(scanner.hasNextLine()){
s = s + scanner.nextLine();
}
Miałeś na myśli 'getClass(). GetResourceAsStream (" Words.txt ")' – Winter
Spróbuj umieścić plik .txt w katalogu głównym projektu. Pliki tekstowe mogą znajdować się w tym samym folderze co pliki w konkretnym pakiecie, ale tak naprawdę nie są częścią pakietu. Zamiast tego musisz załadować go z systemu plików (lub alternatywnie ze słoika lub wojny). – Marvo
To zadziałało; dzięki! –