如何在Java中读写文件时保持相同的格式?

时间:2015-10-26 11:31:35

标签: java xml read-write

我正在尝试读取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">

提前感谢您的帮助。

3 个答案:

答案 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”重新实现。你确定有充分的理由重新实施吗?