0

SQLite テーブル データをエクスポートしようとしています。IOException が発生しています: /TestFileExport0719a.csv: オープンに失敗しました: EROFS (読み取り専用ファイル システム)

以下は私のコードです:

 Boolean returnCode = false;
        int i = 0;
        String csvValues = "";

        dbadapter = new DBAdapter(this);
        dbadapter.open();
        try {
            File outFile = new File(outFileName);
            FileWriter fileWriter = new FileWriter(outFile);
            BufferedWriter out = new BufferedWriter(fileWriter);
            Cursor cursor = dbadapter.getAllSkus();
            if (cursor != null) {
                   while (cursor.moveToNext()) {

                     csvValues = Long.toString(cursor.getLong(0)) + ",";
                        csvValues += cursor.getString(1)
                                + ",";
                        csvValues +=  cursor.getString(2)
                                + "\n";

                            out.write(csvValues);

                    }
                cursor.close();
            }
            out.close();
            returnCode = true;
        } catch (IOException e) {
            returnCode = false;
            Log.d(TAG, "IOException: " + e.getMessage());
        }
        dbadapter.close();
        return returnCode;

デバイスはルート化されていません。どんな助けでも大歓迎です。

ありがとう

に変更を加えた後、次のエラーが表示されます。

ファイル outFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), outFileName);

07-20 18:31:07.595: D/BackupCSV(1580): IOException: /storage/emulated/0/Download/TestFileExport0719a.csv: オープンに失敗しました: EACCES (許可が拒否されました)

編集-

マニフェストにアクセス許可を追加すると、問題が修正されました。

助けてくれてありがとう。

4

1 に答える 1

1

今後は、スタック トレース全体を投稿してください。

が であると仮定するoutFileNameTestFileExport0719a.csv、これは無効なパスです。getFilesDir()内部ストレージ (例: ) または外部ストレージ (例: )のいずれかに書き込む必要がありますgetExternalFilesDir()

これはエクスポート操作であるため、外部ストレージに書き込みたいと想定し、ユーザーが CSV ファイルに個別にアクセスできるようにします。その場合は、次のように変更します。

File outFile = new File(outFileName);

に:

File outFile = new File(getExternalFilesDir(), outFileName);

また:

File outFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), outFileName);

またはそのようなもの。

于 2013-07-20T22:10:07.437 に答える