2

構成ファイルとログファイルを作成するアプリケーションがあります。これらを外部ストレージに保存しましたが、Androidエミュレーターで試してみると、外部ストレージが書き込み可能ではないため、機能しません。これが発生した場合、ファイルをどこに保存する必要がありますか?

これは私のコードです:

private void createConfigurationFile(){
    File ssConfigDirectory = 
        new File(Environment.getExternalStorageDirectory()+"/MyApp/config/");
    File file = new File(ssConfigDirectory, mUsername+".cfg");

    if(!file.exists()){
        try{
            String state = Environment.getExternalStorageState();
            if (!Environment.MEDIA_MOUNTED.equals(state)){
                ssConfigDirectory = new File("PATH_WHERE_I_SHOULD_STORE_IT");
            }
            File ssLogDirectory = new File(ssConfigDirectory+"/SweetSyncal/log/");
            ssLogDirectory.mkdirs();                
            ssConfigDirectory.mkdirs();

            File outputFile = new File(ssConfigDirectory, mUsername+".cfg");                
            FileOutputStream fOut = new FileOutputStream(outputFile);
            OutputStreamWriter osw = new OutputStreamWriter(fOut); 

            writeFile(osw);
            osw.flush();
            osw.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
4

1 に答える 1

3

ファイルが大きすぎない場合は、デバイスの内部ストレージに保存できます。

内部ストレージにアクセスするには、次の方法を使用できます。

FileOutputStream openFileOutput (String name, int mode)

(使用するには のインスタンスが必要ですContext)

例:

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

提供したコードが機能しない理由については、次の 2 つの可能性があります。

  1. 必要な権限 ( WRITE_EXTERNAL_STORAGE) を追加するのを忘れました。
  2. エミュレーターで SD カードが有効になっていません。Eclipse を使用していると仮定すると、AVD Manager で有効にすることができます。AVD インスタンスを編集し、適切なフィールドに SD カードのサイズを入力するだけです。というハードウェア機能も追加しSD Card Supportて、TRUE に設定する必要があります。

公式のデベロッパー ガイドには、Android のストレージについて知っておくべきすべてのことを説明した素晴らしい記事があります。

ここで読むことができます

于 2012-10-10T17:47:24.457 に答える