2014-11-22 4 views
0

Я пытаюсь собрать все данные в виде текстового файла в одну переменную строку с осознанием того, что у меня есть, и она работает нормально, но вывод показывает следующее:нулевое значение добавляется при использовании сканера

nullRead File Test 

Я использовал методы replaceAll, чтобы попытаться удалить null, но он не работает. Почему этот нулевой показ и как я могу избавиться от него?

Соответствующий Исходный код:

private static final long serialVersionUID = 1L; 
    private Scanner readWatched; 
    String fileData; 

    public void handleFile() { 
     try { 
      readWatched = new Scanner(new File("E:\\Watched.txt")); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void readFile() { 
     try { 
      while (readWatched.hasNext()) { 
       fileData += readWatched.next() + " "; 
      } 
      fileData.replaceAll("null", " "); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     System.out.println(fileData); 
    } 

    public void closeFile() { 
     readWatched.close(); 
    } 

ответ

1

В качестве ObjectfileData по умолчанию null поэтому его начальное значение String переводится в строковый литерал "null" согласно JLS 15.18.1, когда добавляется к другой строке. Поэтому он должен быть инициализирован:

private String fileData = ""; 

Рассмотрим с помощью StringBuilder здесь

+0

Спасибо, но почему не метод replaceAll заменить его пробелом? – Tertles

+2

Вы пытаетесь заменить литерал 'String'« null »в' fileData', который не совпадает с «null» - отсутствие назначенного значения. Даже если бы использовался «null», это не сработало бы, так как результат «NPE» ... – Reimeus

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