2015-08-14 4 views
0

Я пытаюсь написать программу, которая читает текст из файла, указанного пользователем. Теперь эта программа должна обнаружить пустую строку.Как определить новую строку (или пустую строку) в файле?

Это то, что я безуспешно пытался:

public static void editFile(String filePath) throws FileNotFoundException, IOException { 
    file = new File(filePath); 
    if(file.exists()) { 
     fileRead = new FileReader(file); 

     bufferedReader = new BufferedReader(fileRead); 

     String line = bufferedReader.readLine(); 
     System.out.println(line); 
     while(line != null) { 
      line = bufferedReader.readLine(); 
      if(line == "") { 
       //line = null; 
       System.out.println("a"); 
      } 
      System.out.println(line); 
     } 
    } 
} 

Чтобы быть более ясным:

Если я передаю в текстовом файле с, например, этот текст:

test1
test2

test3

test4

он должен напечатать 2 A в консоли из-за пустых пространств, но это не так.

Спасибо за ваше время, я рад за любое предложение, которое у вас может быть.

+0

Каков точный выход? Он все еще печатает новые строки? Вы пробовали отладку? –

ответ

1

Это потому, что сравнение неверно. Вы не можете использовать == для сравнения двух строк, вам нужно использовать метод equals:

if(line.equals("")) 

Поскольку вы проверяете на пустую строку, вы также можете написать

if(line.isEmpty()) 

How do I compare strings in java?

0

То, что вы делаете неправильно, заключается в том, что вы сравниваете сама переменную, а не ее значение с нулевой строкой. Как правило, имеются встроенные функции в струнной класса, которые возвращают истинную & ложные для проверки, если это == с чем-то.

if(line.equals("")) { ... } 

Или вы можете использовать любой альтернативный способ.

1

BackSlash полностью прав, и ответил на ваш вопрос. Я хотел бы добавить, что ваш код имеют некоторые ошибки:

  • Вы не закрываете Ридер
  • Вы не тестируете первую линию для заготовки
  • Вы обработкой значения null когда достигнуто EOF

Следующие исправления этих ошибок.

public static void editFile(String filePath) throws IOException 
{ 
    File file = new File(filePath); 
    if (file.exists()) 
    { 
     BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); 
     try 
     { 
      String line; 
      while ((line = bufferedReader.readLine()) != null) 
      { 
       if (line.isEmpty()) 
       { 
        //line = null; 
        System.out.println("a"); 
       } 
       System.out.println(line); 
      } 
     } finally { 
      bufferedReader.close(); 
     } 
    } 
} 

Выход:

test1 
test2 
a 

test3 
a 

test4 

Примечание: Вы по-прежнему печать пустой строки в дополнение к "а".

Смежные вопросы