и заблаговременно за помощь. Я довольно новичок в Java и не имел никакого формального образования Java. Я делаю сервер Minecraft Bukkit для практики и регистрирую место регистрации в файле при его создании. Я пытаюсь сделать логическое значение, которое возвращает true, если местоположение уже находится в файле, а false - если нет. Я не могу использовать цикл while, иначе он замораживает сервер, поэтому я использую цикл for. В любом случае, все строки, возвращаемые BufferedReader, являются нулевыми, и я не знаю, почему. У меня есть целое число, которое возвращает количество строк в файле с помощью BufferedReader, которое отлично работает. Я не понимаю, почему он возвращает null с булевым. Вот булево:BufferedReader возвращает Null без видимых причин
код блока:
private boolean isDuplicate(String in) throws IOException
{
File f = file;
try {
fr = new FileReader(f);
br = new BufferedReader(fr);
} catch (FileNotFoundException e1) {
log(Level.WARNING, "File not found.");
}
String temp;
in = in.substring(0,in.length() - 1);
for(int i = 0; i < (countLines(f)); i++)
{
if((temp = br.readLine()) != null)
{
String s = temp;
log(temp);
}
}
return false;
}
Вот целое:
private int countLines(File f){
try {
fr = new FileReader(f);
br = new BufferedReader(fr);
} catch (FileNotFoundException e1) {
log(Level.WARNING, "File not found!");
}
for(int i = 0; i < 100000; i++)
{
try
{
if(br.readLine() == null)
{
return i;
}
}
catch (NullPointerException e)
{
return i;
}
catch (IOException e)
{
}
}
return 0;
}
в случае, если ваши 'fr' и' br' являются переменными класса (на самом деле они не должны), поэтому вы получаете нуль в isDuplicate(): ваши countlines() сортируют 'выхлопывает' поток br (Я предполагаю здесь, без кода, который на самом деле компилирует, это довольно сложно) – Marco