1

以下に示すコードを使用して、テキストファイルを作成し、データを書き込もうとしました。

ジャバ コード_1:

File dir = Environment.getExternalStorageDirectory();
    File file = new File(dir,"/DCIM/"+fileTitle);

    try {           
        if( file.exists() ){
        FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write("this is a text");
        osw.flush();
        osw.close();
        } else {
            file.createNewFile();
            FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
            OutputStreamWriter osw = new OutputStreamWriter(fos);
            osw.write("this is a text");
            osw.flush();
            osw.close();
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

しかし、DCIM ディレクトリを確認すると、ファイルは作成されていますが、データは書き込まれていません。私の間違いがどこにあるか教えてください。

4

2 に答える 2

1

申し訳ありませんが、外部ストレージには作成されていませんが、アプリケーションの内部ストレージに作成されています (ファイルが/data/data/<Application_Package_Name>/filesディレクトリに作成されていることを確認してください)

なぜなら、

openFileOutputアプリケーションの内部ストレージにファイルを作成するものを使用して います。

public abstract FileOutputStream openFileOutput (String name, int mode)

以来: API レベル 1

このコンテキストのアプリケーション パッケージに関連付けられたプライベート ファイルを書き込み用に開きます。ファイルが存在しない場合は作成します。

コード:

file.createNewFile();
FileOutputStream fos = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write("this is a text");
osw.flush();
osw.close();
于 2012-09-15T10:51:46.550 に答える
0

使用のみ

        FileOutputStream fos = openFileOutput(fileTitle, MODE_WORLD_READABLE);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write("this is a text");
        osw.flush();
        osw.close();

内部ストレージにファイルを作成します。

または使用

        File dir = Environment.getExternalStorageDirectory();
        File file = new File(dir,"/DCIM/"+fileTitle);
        FileOutputStream fos = new FileOutputStream(file);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write("this is a text");
        osw.flush();
        osw.close();
于 2012-09-15T11:13:48.877 に答える