扫描文件并替换字符

时间:2014-11-14 00:55:28

标签: java file

我创建了一个程序,它将扫描文本文件,切换某些字符,然后打印到另一个文件中。我创建了一个改变了“|”的程序到“\ t”和“\ n”到“”。有一个运行时错误,说“线程中的异常”主“java.lang.NullPointerException         在Nov5.main(Nov5.java:20)“

如果有人知道如何纠正此错误并让我的程序运行,那就太棒了。非常感谢!

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.BufferedWriter;

public class Nov5  
{

public static void main( String args[] )
{

    try
    {

        BufferedReader br = new BufferedReader(new FileReader( "OneRecord.fna" ));
        BufferedWriter bw = new BufferedWriter(new FileWriter( "OneLineRecord.faa" ));

        String line;
        { 
            while ((line = br.readLine () ) != null)
            line = line.replace ( '|' , '\t');
            String replacedString = line.replaceAll ("(\\n)", "");
            bw.write( line );

        }
        br.close();
        bw.close();
    }
    catch( IOException e )
    {
        System.out.println( "error" );
    }
}
}

2 个答案:

答案 0 :(得分:0)

while循环中添加大括号,以便在replaceAll出现时语句不会终止

while ((line = br.readLine()) != null) { // increase scope

    line = line.replace('|', '\t');
    String replacedString = line.replaceAll("(\\n)", "");
    bw.write(line);
}

答案 1 :(得分:0)

您的大括号{位于while循环的错误位置。

while循环条件之后没有大括号,只有它后面的第一个语句充当循环体。当你到达这一行

String replacedString = line.replaceAll ("(\\n)", "");

整个文件已被阅读且linenull。变化

{
    while ((line = br.readLine () ) != null)

while ((line = br.readLine () ) != null) {