我正在尝试读取xml文件(in.arxml)并将其复制到另一个xml文件(out.arxml)中。当我刚读取in.arxml文件并在工作区中显示内容时,间距和格式将保持不变,并且与文件中的内容完全相同。但是,当我将其写入out.arxml文件时,整个ile将打印在一行上。有人可以告诉我,我做错了吗?我读取和写入文件的代码如下所示:
BufferedWriter out;
BufferedReader in;
String x =null;
int lineNumb=0;
try {
in = new BufferedReader (new FileReader("C:\\New_folder\\in.arxml"));
out = new BufferedWriter(new FileWriter(""C:\\New_folder\\out.arxml"));
while (in.readLine()!= null){
x = in.readLine();
java.lang.System.out.println(x);
out.write(x);
lineNumb++;
}
in.close();
}catch (IOException e){
java.lang.System.out.println("There was a problem" + e);
}
in.arxml文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xxx xmlns="http://xd3.h?.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=""http://www.w3.org/2001/XMLSchema-instance">
编写的out.arxml看起来像这样
<?xml version="1.0" encoding="UTF-8"?> <xxx xmlns="http://xd3.h?.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=""http://www.w3.org/2001/XMLSchema-instance">
提前感谢您的帮助。
答案 0 :(得分:2)
在out.write(x);
之后,添加以下行:
out.newLine();
这将添加缺少的回车。
答案 1 :(得分:1)
如果您要复制文件内容,请使用Stream
而非Reader
s / Writer
s。
Stream
在字节级操作,读取和写入字节时没有解释。
Reader
s / Writer
在字符级别运行,在读/写期间可能会发生一些转换,尤其是字符集编码和/或行尾。
您也忘了输出行尾。
答案 2 :(得分:1)
声明
x = in.readLine()
将行的内容存储在变量x
中。此字符串不包含任何换行符。如果您只是使用
x
的内容写入文件
out.write(x)
你当然会失去所有的换行符。尝试将其更改为
out.write(x + "\n")
顺便说一句:你的while循环中的条件应该抛弃每一行。这是有意的吗?
为什么要尝试逐行处理XML文件?使用一些XML框架似乎更合适。
另一句话:您当前的代码看起来像是一个奇怪的“TEE”重新实现。你确定有充分的理由重新实施吗?