1

/res/raw/XML ファイルをローカル ストレージにコピーする方法があります。ただし、最終的にコピーされるファイルには、元の XML ファイルにはない追加のコメントが生成されます。

<!-- From: file:/C:/Users/William/Documents/Projects/Home/KanjiFixProject/KanjiFix/src/main/res/raw/fallback_fonts.xml -->

プロジェクトをコンパイルしたときにファイルが存在した場所を示しているようです。ファイルの全文はこちらをご覧ください。

このテキストが表示される原因は何ですか?どうすれば防止できますか? 以下は、ファイル/res/raw/をディスクにコピーするために使用する方法です。

private void copyRawResourceToFile(int resource, File outputFile) throws IOException {
    InputStream stream = getResources().openRawResource(resource);
    FileOutputStream output = null;
    byte[] buffer = new byte[1024];
    int read = 0;
    try {
        output = new FileOutputStream(outputFile);

        while ((read = stream.read(buffer)) > 0) {
            output.write(buffer, 0, read);
        }

        output.flush();
    }
    finally {
        stream.close();

        if (output != null) {
            output.close();
        }
    }
}
4

2 に答える 2

0

ストリームがその値を挿入するのをプログラムで防止する方法が見つからない場合は、OutputStream に送信する前に行ごとに BufferReader と readLine を使用して、行が で始まっていないことを検証する機会を与えてはどうでしょうか。 「<-- From: file:」、それ以外の場合はその行を無視してください。

これでうまくいきますが、それを読むときにその余分な行をプログラムでスキップする方法があるかもしれないので、実際に最善のアプローチであるかどうかはわかりません...

お役に立てれば...

よろしく!

于 2013-10-03T00:27:48.383 に答える
0

Android Studio の新しいバージョン (この記事の時点で v0.8.14) では、この問題が修正されています。

于 2014-12-08T17:53:33.090 に答える