没有内容的空文件

时间:2014-02-13 21:25:53

标签: java html

以下是我之前提问的编辑版本:

所以这是我的AIM:读取.txt文件(HTML文件)并将所需内容放入.txt文件中。

现在,这个HTML文件包含大量我不需要的表和格式,我只需要内容

import java.io.*;


public class File {


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

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

        String inputLine = "";
        int i=0;

        while ( ( inputLine = in.readLine( ) ) != null ) {
        if ( inputLine.contains( "Windows" ) ) {
        out.append( inputLine );
        out.newLine( );


        }

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

它会创建一个名为“output.txt”的文件,但它完全是空的。

如何对字符串进行精确排序?是逐字逐句还是一句一句?

以下是该文件的示例。 (有点吧)

 <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 Enterprise Edition,60那样执行吗?

更新:

它还执行“hi”

3 个答案:

答案 0 :(得分:2)

BufferedWriter无法使用字符串参数进行实例化。请改用:

BufferedWriter out = new BufferedWriter(new FileWriter( output ));

此外,代码中存在一些错误:

  1. 数组Servers []尚未初始化
  2. 在将输入文件设置为Servers []
  3. 之前,它正在读取输入文件三次

    可以简化为:

         try {
                String input= "D:\\input.txt";
                BufferedReader in = new BufferedReader( new FileReader( input ) );
    
                String output = "D:\\output.txt";
                BufferedWriter out = new BufferedWriter( new FileWriter( output ) );
    
                String inputLine = "";
    
                while ( ( inputLine = in.readLine( ) ) != null ) {
                    if ( inputLine.contains( "Windows" ) ) {
                        out.append( inputLine );
                        out.newLine( );
                    }
                }
    
                in.close( );
                out.flush( );
                out.close( );
            } catch ( Exception e ) {
            }
    

答案 1 :(得分:0)

是编译时错误而不是运行时错误吗?如果是这样,可能是因为BufferedWriter没有构造函数接受String,只有另一个Writer。相反,尝试:

String output="output.txt";
BufferedWriter out = new BufferedWriter(new FileWriter(output));

BufferedWriter旨在包装其他Writer类,以防止每个输入的字节直接写入底层输出流。

答案 2 :(得分:0)

还尝试实例化你的数组!你有String Workstation[];String Server[];,但是在这种状态下,它们是空的引用,并且在你修复编译错误后会给你nullpointer异常。

尝试将其初始化为String Server[] = new String[sizeOfArray];或考虑使用List<String>代替。