1

sdcard 上のファイルに書き込むには、AndroidManifest.xmlにandroid.permission.WRITE_EXTERNAL_STORAGEを追加します。デバイスメモリ(フラッシュ/アプリケーションフォルダー)の記録を保持するために追加/実行する必要があるのは何ですか?

書き込み機能:

bool write_to_file(const std::string & file_name, const std::string & text)
{
     bool res = false;

     std::ofstream stream (file_name.c_str (), std::ios::out);
     stream.clear();
     if (! stream.fail()) {
         res = true;
         stream << text.c_str() << std::endl;
     }
     else {
         LOGE ("std :: ofstream: wtire error");
     }
     stream.close();

     return res;
}

呼び出し例

std::string file("/sdcard/text.txt");
write_to_file(file, "simple text"); // OK !!!

std::string file("./text.txt");
write_to_file(file, "simple text"); // ERROR !!!
4

1 に答える 1

1

トリックは、正しいファイル名をネイティブ コードに渡すことです。Android ではContext.getDir()、電話機のメモリ内のデータ フォルダの場所を取得するために使用します。このような:

File Path = Ctxt.getDir("Data");
File FName = new File(Path, "MyFile.txt");

FName.toString()次に、何らかの方法でネイティブ ライブラリに渡します。貼り付けられたスニペットは、Java から直接呼び出すことはできません。グルー コードがありません。

私が知っている Android のバージョンでは、上記のファイル パスは次のファイル システム パスに対応します/data/data/com.mypackage/app_Data/MyFile.txt。しかし、それに頼ることはできません。

デバイスファイルシステムの任意のパスへの書き込みは、OS パーミッションによって禁止されています。サンドボックスがあるので、そこで遊んでください。これがスマートフォンのやり方です。

于 2012-08-24T13:05:53.530 に答える