Я пытаюсь написать код для игры с угадыванием слов, и она хорошо работает, когда я использую bufferedreader и inputstream вместе. Но когда я пытаюсь использовать его с помощью сканера, он не может найти файл, хотя в обоих случаях файл находится в одной папке. Он находится в папке с именем res в папке src в моей папке проекта (я кодирую в eclipse).Сканер бросает FileNotFoundException, но с использованием буферизованного считывателя и входного потока нет?
import java.util.ArrayList;
import java.util.Scanner;
import java.io.File;
public class WordGen {
private final String filename = "/res/words.txt";
File file = new File(filename);
Scanner input = null;
private ArrayList<String> list = new ArrayList<>();
public WordGen() {
try {
input = new Scanner(file);
while (input.hasNextLine()) {
String w = input.nextLine();
list.add(w);
}
} catch (Exception ex) {
System.out.println("File not found.");
}
}
public String getword() {
if (list.isEmpty()) {
return "NOTHING";
}
return list.get((int) (Math.random() * list.size()));
}
}
public class test {
public static void main(String[] args) {
WordGen wordgen = new WordGen();
System.out.println(wordgen.getword());
}
}
Я попытался найти эту проблему, но не смог найти ее здесь. Я предполагаю, что это очень маленькая ошибка, которую я не могу понять. Спасибо и приветствую.
EDIT: Вот другой код, который работал (все остальное же, как и раньше):
public WordGenerator()
{
try(InputStream input = getClass().getResourceAsStream(fileName);
BufferedReader bfreader = new BufferedReader(new InputStreamReader(input)))
{
String line = "";
while ((line = bfreader.readLine()) != null)
words.add(line);
}
catch (Exception e)
{
System.out.println("Couldn't find file");
}
}
Вы не показали код, который предположительно работает с использованием 'BufferedReader' и' InputStream'. Обратите внимание, что в настоящее время вы пытаетесь найти файл в директории 'res' в корневом каталоге вашего компьютера, и вам нужно будет использовать« InputStreamReader ». –
. вот что означает '/ res/words.txt'. Это * не * то же, что и «под вашей папкой src». –
@Jon Skeet добавил другой код. Это работает, но я хочу знать, почему сканер не работает. – Masquerade007