-3

我有一个 XML 文件,如下所示

<?xml version="1.0" encoding="ISO-8859-1"?>
<CATALOG>
    <food>
        <name>Strawberry Belgian Waffles</name>
        <price>$7.95</price>
        <description>light Belgian waffles covered with strawberries and
            whipped cream
        </description>
        <calories>900</calories>
    </food>
</CATALOG>

我需要使用java编程将此文件复制到另一个文件。以下是我复制文件的java代码

    try {
        File f1 = new File("source.xml");
        File f2 = new File("destination.xml");
        InputStream in = new FileInputStream(f1);
        OutputStream out = new FileOutputStream(f2);

        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
        System.out.println("File copied.");
    } catch (FileNotFoundException ex) {
        System.out
                .println(ex.getMessage() + " in the specified directory.");
        System.exit(0);
    } catch (IOException e7) {
        System.out.println(e7.getMessage());
    }

这段代码确实复制了文件,但问题在于将源文件的所有内容都复制到了一行中,我需要保持源文件的原始结构。任何人有更好的想法来复制文件并保持其原始结构?谢谢

4

2 回答 2

1

尝试使用BufferedReader使用readLine()函数逐行读取。然后使用 BufferedWriter 写入该行,然后使用其newLine()函数附加一个换行符。

这应该够了吧。

于 2012-07-28T14:05:06.333 回答
1

Java 有一个名为NIO的新包,它将为您简化很多事情。还有Apache Commons IO。出于性能问题和更简单的代码,我建议您切换到其中任何一个。

例子:

import java.io.File;
import java.nio.file.Path;
...
String orig ="file.xml";
String dest = "file.xml.bak";
File f = new File (orig);
Path p = f.toPath();
p.copyTo(new File (dest).toPath(), REPLACE_EXISTING, COPY_ATTRIBUTES);

或者

import java.file.io;
import org.apache.commons.io.FileUtils;
....
String orig ="file.xml";
String dest = "file.xml.bak";
File fOrig = new File(orig);
File fDest = new File(dest);
FileUtils.copyFile(fOrig, fDest);
于 2012-07-28T13:58:32.807 回答