-1

私はAndroidアプリの開発に不慣れです。私の質問に関して、私は次の投稿を見つけましたが、それを私の既存のプロジェクトに実装する方法がわかりません。 'assets'フォルダからsdcardにファイルをコピーする方法は?

Stardictファイルを読み取ることができる辞書アプリZhuangDictに実装したいと思います。 http://code.google.com/p/zhuang-dict/source/browse/trunk/ZhuangDict/src/cn/wangdazhuang/zdict/ZhuangDictActivity.java

ZhuanDictは、最初の起動時に「zdict」という空のディレクトリを作成します。私がやりたいのは、自分のstardictファイルをアセットからzdictディレクトリにコピーすることです。

私はプログラミングの知識がありません。GoogleコードのZhuangDictソースコードを確認するためのステップバイステップガイドを提供していただければ幸いです。

4

2 に答える 2

0

これをチェックしてください

private static String DB_PATH = "/data/data/com.packagename.myapp/databases/";

   try {
        // Open your local db as the input stream
        InputStream myInput = myContext.getAssets().open(
                "dbname.sqlite");
        // Path to the just created empty db
        String outFileName = DB_PATH + DATABASE_NAME;

        // Open the empty db as the output stream
        OutputStream myOutput = new FileOutputStream(outFileName);

        // transfer bytes from the inputfile to the outputfile
        byte[] buffer = new byte[myInput.available()];
        int read;
        while ((read = myInput.read(buffer)) != -1) {
            myOutput.write(buffer, 0, read);
        }

        // Close the streams
        myOutput.flush();
        myOutput.close();
        myInput.close();

    } catch (IOException e) {
        Log.e(TAG, "copyDataBase Error : " + e.getMessage());
    }
于 2013-03-20T10:07:40.543 に答える
0

ファイルをrawリソース(/ res / raw)フォルダーに入れて、次の標準関数を使用することもできます。

protected void CopyResource(int aInputIDResource, String aOutputFileName, boolean afForceWrite) {
        if (afForceWrite == false) {
            InputStream theTestExist;
            try {
                theTestExist = openFileInput(aOutputFileName);
                theTestExist.close();
                return;
            } catch (IOException e) {
            }
        }

        char[] theBuffer = new char[1024];
        int theLength;

        try {
            OutputStreamWriter out = new OutputStreamWriter(openFileOutput(
                    aOutputFileName, MODE_WORLD_READABLE), "ISO-8859-1");
            InputStreamReader in = new InputStreamReader(getResources()
                    .openRawResource(aInputIDResource), "ISO-8859-1");

            while ((theLength = in.read(theBuffer)) > 0)
                out.write(theBuffer, 0, theLength);

            out.flush();
            out.close();
        } catch (Exception e) {
            Log.e("TAG", "Error: " + e.getMessage());
        }
    }

次に、アプリケーションまたはアクティビティの関数onCreate()で、次を呼び出します。

CopyResource(R.raw.your_database, "MR_SBusPlugin.so", false);
于 2013-03-20T10:20:49.743 に答える