-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());
    }

このコードはファイルをコピーしますが、問題は、ソースファイルのすべてのコンテンツを1行でコピーすることであり、ソースファイルの元の構造を維持する必要があります。ファイルをコピーして元の構造を維持するためのより良いアイデアを持っている人はいますか?ありがとうございました

4

2 に答える 2

1

JavaにはNIOと呼ばれる新しいパッケージがあり、これにより作業が大幅に簡素化されます。ApacheCommonsIOもあります。パフォーマンスの問題とより単純なコードのために、これらのいずれかに切り替えることをお勧めします。

例:

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 に答える
1

BufferedReaderを使用して、 readLine()関数を使用して行ごとに読み取ってみてください。次に、BufferedWriterを使用して行を書き込み、newLine()関数を使用して改行文字を追加します。

それでうまくいくはずです。

于 2012-07-28T14:05:06.333 に答える