VanDavv
(Vandavv96)
23 Luty 2014 09:49
#1
Witam. Czy wie ktoś gdzie popełniłem błąd w tym kodzie?
Set<String> words = new TreeSet<String>(
Arrays.asList(
new File("UniqueWords.txt").list()
));
Chcę dodać do kontenera Set wszystkie słowa znajdujące się w pliku UniqueWords, jednak przy linijce
Arrays.asList(
wywala błąd NullPointerException.
W tym, że nie dołączyłeś dokumentacji do IDE, tak, aby wiedzieć co robi dana metoda.
VanDavv
(Vandavv96)
23 Luty 2014 10:23
#3
hmm szczerze to nie patrzyłem na opis tylko na typ zwracany a to był jedyny string array który widziałem. a jest jakiś sposób żeby zrobić to tak , jak wyżej? w jakiś elegancki sposób?
Nie w Javie. Jak dla mnie pobrać słowa najszybciej będzie Scanner-em.
No niestety przez wyjątki zbyt elegancko nie jest:
BufferedReader reader = null;
String line;
Set<String> words = new TreeSet<>();
try {
reader = new BufferedReader(new FileReader("abc.txt"));
while (null != (line = reader.readLine())) {
String[] splitted = line.split(" ");
words.addAll(Arrays.asList(splitted));
}
} catch (IOException ex) {
// error
} finally {
if (null != reader) {
try {
reader.close();
} catch (IOException ex) {
// error
}
}
}
VanDavv
(Vandavv96)
23 Luty 2014 11:16
#6
Więc chyba wrzucę to jako osobny plik do obsługi plików i w kodzie właściwym wywołam tylko metodę. Dziękuję!
Wystarczy zwykła metoda.
public static void main(String[] args) {
try {
Set<String> words = readUniqueWords(new File("abc.txt"));
} catch (IOException ex) {
// error
}
}
private static Set<String> readUniqueWords(File file) throws IOException {
String line;
Set<String> words = new TreeSet<>();
try (BufferedReader reader = new BufferedReader(new FileReader(file));) {
while (null != (line = reader.readLine())) {
String[] splitted = line.split(" ");
words.addAll(Arrays.asList(splitted));
}
}
return words;
}