Java 扫描文件并替换字符

Java 扫描文件并替换字符,java,file,Java,File,我创建了一个程序,可以扫描一个文本文件,切换某些字符,然后打印到另一个文件中。我创建了一个程序,将“|”更改为“\t”,将“\n”更改为“”。有一个运行时错误,表示“线程中的异常”main“java.lang.NullPointerException 在Nov5.main(Nov5.java:20)” 如果有人知道如何纠正这个错误并让我的程序运行,那就太好了。非常感谢 import java.io.BufferedReader; import java.io.FileReader; import

我创建了一个程序,可以扫描一个文本文件,切换某些字符,然后打印到另一个文件中。我创建了一个程序,将“|”更改为“\t”,将“\n”更改为“”。有一个运行时错误,表示“线程中的异常”main“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" );
    }
}
}

将大括号添加到
while
循环中,以便在发生
replaceAll
时语句不会终止

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

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

您的开头括号
{
放错了
while
循环的位置

如果在
while
循环条件后没有大括号,则只有它后面的第一条语句充当循环体

String replacedString = line.replaceAll ("(\\n)", "");
已读取整个文件,并且
null
。更改

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


注意:您没有使用
replacedString
(可能是输入错误)。因此删除
\n
的逻辑无效。
while ((line = br.readLine () ) != null) {