0

次の手順で、アプリケーションの内部ストレージ ディレクトリにファイルを書き込もうとしています。

1) アクティビティ クラスで「jni ライブラリ」を初期化する:

MyLib mylib = new MyLib();

2) アクティビティ クラスで getFilesDir を呼び出して、内部ストレージ パスを指定します。

mylib.setSavePath(getFilesDir());

3) 私のライブラリから mylib.save() メソッドを呼び出します。これは、C++ で次のことを行っています: 書き込みたいファイルを開きます:

fp = fopen(pathtotheinternalstorage+filename,"w");
if (!fp) {
    SetError(XML_ERROR_FILE_NOT_FOUND, filename, 0);
    return _errorID;
}

ファイル パスは正しいです: /data/data/com.myapp/files/myfile.xml しかし、fopen は失敗します。何が間違っているのかわかりません。私がいくつかのJavaコード(openFileOutput)で書くと、うまくいきます。

ご協力いただきありがとうございます。

4

2 に答える 2

0

より多くの情報が役立ちます。パスに基づいて、Linux ボックスを使用していると想定しています。まず、パスのアクセス許可を確認します。以下のいくつかの提案

1) ホーム ディレクトリにあるファイルを開いて、同じ問題があるかどうかを確認してください。

2) を使用してファイルを誰でも書き込み可能に設定してみてchmod 777、問題が解決するかどうかを確認してください。誰でも書き込み可能に設定することは実際には危険であり、問​​題が見つかったら、より制限的なものに変更する必要があることを忘れないでください。

于 2013-08-13T14:29:18.773 に答える