无法写入文件

时间:2018-06-24 12:00:23

标签: java

以上是工作代码段。该代码运行良好,但是没有写else if(line.contains("{NEW_LIMIT}"))语句中的内容。

另一个问题是,程序在写入新文本文件后会丢失其原始格式,也就是说,它只是将所有内容都写在一行中。 我在做错什么吗?

public static void replace1(String name, String limit, String nlimit) throws IOException
{
    File infile = new File("s://BlackBuck/Question_1_Template.txt");
    File outfile = fileReturn();

    FileWriter fw;
    BufferedWriter bw = null;

    FileReader fr;
    BufferedReader br = null;

    String line, putdata = null;;
    try {
        fr = new FileReader(infile);
        br = new BufferedReader(fr);

        fw = new FileWriter(outfile);
        bw = new BufferedWriter(fw);
        while((line = br.readLine()) != null)
        {
            if(line != null)
            {   
                if(line.contains("{CUSTOMER_NAME}"))
                {
                    putdata = line.replace("{CUSTOMER_NAME}", name);
                    bw.write(putdata);
                }
                else if(line.contains("{CURRENT_LIMIT}"))
                {
                    putdata = line.replace("{CURRENT_LIMIT}", limit);
                    bw.write(putdata);
                }
                else if(line.contains("{NEW_LIMIT}"))
                {
                    putdata = line.replace("{NEW_LIMIT}", nlimit);
                    bw.write(putdata);
                }
                else
                {
                    bw.write(line);
                }
            }
        }
    }finally {
        bw.close();
        br.close();
    }

}

1 个答案:

答案 0 :(得分:2)

如果一行包含{CUSTOMER_NAME}{CURRENT_LIMIT},则不会运行语句{NEW_LIMIT}。您只需使用以下代码即可解决此问题:

if(line != null) {
    putdata = line.replace("{CUSTOMER_NAME}", name)
            .replace("{CURRENT_LIMIT}", limit)
            .replace("{NEW_LIMIT}", nlimit);
    bw.write(putdata);
    // append a line separator to current line
    bw.newLine();
}
相关问题