2014-02-14 5 views
0

Только для вашей информации: У меня был другой вопрос, связанный с этим кодом, и я уже спросил его, я редактировал вопрос на этот вопрос (полностью), но у меня не было ответов.Файл My FileWriter полностью пуст

AIM: Я пытаюсь читать в файле (.txt, содержащем HTML) и сортировать содержимое. Он создает текстовый файл, и он полностью пуст. Я прочитал некоторые подобные ситуации, но я видел, что их ошибка заключалась не в добавлении файла out.flush() или out.close().

Вот код до сих пор:

import java.io.*; 


public class File { 

    public static void main(String[] args) throws IOException { 
     try { 
      String input = "SCCM.txt"; 
      BufferedReader in = new BufferedReader(new FileReader(input)); 
      String output = "output.txt"; 
      BufferedWriter out = new BufferedWriter(new FileWriter(output)); 

      String inputLine = "", s="windows"; 
      String regex = "&nbsp"; 
      while ((inputLine = in.readLine()) != null) { 
       if (inputLine.contains(s)) { 
        inputLine.split(regex); 
        out.append(inputLine); 
        out.newLine(); 
       } 
       in.close(); 
       out.flush(); 
       out.close(); 
      } 
     } 
     catch(IOException e) { 
      System.out.println("Hi"); 
     } 
    } 
} 

Содержимое Я хочу сортировать:

<TR class="RowDark"> 
    <TD width=0><A href="Report.asp?ReportID=100&amp;sp=Service+Pack+1&amp;os=Microsoft%28R%29+Windows%28R%29+Server+2003%2C+Enterprise+Edition"><IMG border=0 src="images/icolink3.gif" alt="Open the target" width=11 height=11></A></TD> 
    <TD class=SimpleTextSmall>&nbsp;Microsoft(R)&nbspWindows(R)&nbspServer&nbsp2003,&nbspEnterprise&nbspEdition&nbsp;</TD> 
    <TD class=SimpleTextSmall>&nbsp;Service&nbspPack&nbsp1&nbsp;</TD> 
    <TD class=SimpleTextSmall>&nbsp;60&nbsp;</TD> 
</TR> 

Выходной Я хочу: Microsoft (R) Windows (R) Server 2003, Enterprise Edition, Пакет обновления 1, 60

Материал, который я прочитал (для информации): Java txt File from FileWriter is empty

UPDATE:

import java.io.*; 

общественного класса File {

public static void main(String[] args) throws IOException { 

    String input = "SCCM.txt"; 
    BufferedReader in = new BufferedReader(new FileReader(input)); 
    String output = "output.txt"; 
    BufferedWriter out = new BufferedWriter(new FileWriter(output)); 


    try { 

     String inputLine = "", s="Windows"; 
     String regex = "&nbsp"; 
     while ((inputLine = in.readLine()) != null) { 
      if (inputLine.contains(s)) { 
       inputLine.split(regex); 
       out.write(inputLine); 
       out.newLine(); 
      } 

     } 
    } 
    catch(IOException e) { 
     System.out.println("Hi"); 

     in.close(); 
     out.flush(); 
     out.close(); 
    } 
} 

}

UPDATE:

Файл ДЕЛАЕТ вывода (тонны любви к тем, кто помог)

Вот как это

<TD width=0><A href="Report.asp?ReportID=100&amp;sp=Service+Pack+1&amp;os=Microsoft%28R%29+Windows%28R%29+Server+2003%2C+Enterprise+Edition"><IMG border=0 src="images/icolink3.gif" alt="Open the target" width=11 height=11></A></TD> 
      <TD class=SimpleTextSmall>&nbsp;Microsoft(R)&nbspWindows(R)&nbspServer&nbsp2003,&nbspEnterprise&nbspEdition&nbsp;</TD> 

Какие-либо подсказки/советы/рекомендации, чтобы сделать его доступным для чтения?

+0

Также следует знать, что 'String.contains()' чувствительно к регистру. Строка поиска - «окна», но строка, которую вы ищете, содержит «Windows». – csmckelvey

+0

Я попробовал оба предложенных предложения, но файл по-прежнему пуст – ToxicGlow

+0

Вы теперь искали «Windows» (с заглавной буквы) _and_ переместили ваши инструкции close() из цикла while? – csmckelvey

ответ

2

Вы закрываете выходной поток внутри цикла while, так что IOException бросается почти сразу, но детали исключения не отображаются. Эти заявления

in.close(); 
out.flush(); 
out.close(); 

должны быть в конце концов блока

try { 
    ... 
catch (IOException e) { 
    e.printStackTrace(); // add me 
} finally { 
    in.close(); 
    out.flush(); 
    out.close(); 
} 

Только тогда вы можете проверить на строки Windows (как указано in the comments)

String s = "Windows"; 
+0

Любопытство, как вы ссылались на конкретный комментарий? – csmckelvey

+0

@Takendarkk ссылка может быть найдена в post time, например, 8 мин. Назад – Reimeus

+0

Ahh, классный материал. Благодарю. – csmckelvey

0

inputLine никогда не содержит windows однако он делает содержат Windows, что приводит к тому, что условие всегда оценивается как ложное, предотвращая добавление мето d из вызываемого.

Изменить следующую строку:

String inputLine = "", s="windows"; 

в

String inputLine = "", s="Windows"; 

или строчная s перед сравнением:

+0

Я попробовал ваше предложение, спасибо :) но все же мой файл пуст – ToxicGlow

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