这是我通过的代码。我想要通过这个来编辑XML文件和代码并添加像|这样的特殊字符(管道)代替&#x7c等等。
class FileReplace
{
ArrayList<String> lines = new ArrayList<String>();
String line = null;
public void doIt()
{
try
{
File f1 = new File("C:/file.xml");
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);
while (line = br.readLine() != null)
{
if (line.contains("|"))
line = line.replace("|", "|");
lines.add(line);
}
FileWriter fw = new FileWriter(f1);
BufferedWriter out = new BufferedWriter(fw);
for(String s : lines)
out.writeline(s);
out.flush();
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally {
fr.close();
br.close();
out.close()
}
}
public static void main(String args[])
{
FileReplace fr = new FileReplace();
fr.doIt();
}
}
我尝试并达到以下错误, 请帮忙。感谢
答案 0 :(得分:1)
这将有效
<强> FileReplace.java 强>
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class FileReplace {
ArrayList<String> lines = new ArrayList<String>();
String line = null;
public void doIt() {
File f1=null;
FileReader fr=null;
BufferedReader br=null;
FileWriter fw=null;
BufferedWriter out=null;
try {
f1 = new File("src/test.xml");
fr = new FileReader(f1);
br = new BufferedReader(fr);
while ((line = br.readLine()) != null) {
if (line.contains("|"))
line = line.replace("|", "|");
lines.add(line);
}
fw = new FileWriter(f1);
out = new BufferedWriter(fw);
for (String s : lines)
out.write(s);
out.flush();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try{
fr.close();
br.close();
out.close();
}catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
public static void main(String args[]) {
FileReplace fr = new FileReplace();
fr.doIt();
}
}
运行程序之前test.xml
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove|</to>
<from>Jani</from>
<heading>Reminder|</heading>
<body>Don't forget me this weekend!</body>
</note>
运行程序后test.xml
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove|</to>
<from>Jani</from>
<heading>Reminder|</heading>
<body>Don't forget me this weekend!</body>
</note>
让我知道你是否面临任何问题......
答案 1 :(得分:0)
将Close()
更改为close()
并关闭finally
块中的读者/作者,这样就可以了。
您还可以使用try-with-resources声明。
答案 2 :(得分:-1)
您的类缺少右括号}
,因此无法解析类文件。
另外,在doIt()
中,请勿在try-block中的任何读者或作者上调用close()
。终于会很好地为你处理这个问题。 :)
现在,您正在尝试关闭它,然后当所有内容都完成且没有错误时,尝试在finally块中再次关闭已经关闭的读取器或编写器。