在java中复制一个文件

时间:2012-07-28 13:56:42

标签: java file-io copy

我有一个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());
    }

此代码复制文件,但问题是将源文件的所有内容复制到一行,我需要保留源文件的原始结构。 任何人都有更好的想法来复制文件并保持其原始结构? 谢谢

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

尝试使用 BufferedReader 来使用 readLine()功能逐行阅读。然后使用BufferedWriter编写该行,然后使用其 newLine()函数追加换行符。

这应该可以解决问题。