1

ファイルを保存する必要があるAndroidアプリがあります。次のようなファイルを作成します。

FileOutputStream fOut = openFileOutput(fileName, 
                    MODE_WORLD_READABLE);
            osw = new OutputStreamWriter(fOut);

私はそれをこのように開きます:

FileInputStream srcFileStream = openFileInput(fileName);

これは、内部メモリファイルで正常に機能します。アプリに設定を追加しました。ユーザーは、代わりにファイルをSDカードに保存することを選択できます。私はこのコマンドを試します:

if (Prefs.getCard(this))
        fileName="/sdcard/"+fileName;

つまり、Prefrencesがyesの場合、ファイル名の前に「/sdcard/」を追加します。残りのコードは同じままですが、

例外が発生するため、これは機能しないようです。

File /sd/file1 contains a path seperator

上記で試したようにわずかな変更を加えて、SDカードと内部メモリの両方に同じコードを使用するにはどうすればよいですか?

4

3 に答える 3

3

あなたは確かにマニフェストに正しい許可を追加することを忘れていませんでした...

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

以下を使用して、外部パスへのアクセスを試みることもできます。

Environment.getExternalStorageDirectory();

デバイスに応じて、すでに異なる外部パス名を見てきました...

于 2012-05-07T14:03:42.920 に答える
2

これはうまくいくはずです。

String baseDir = "";
String fileName = "myFile.txt";
FileOutputStream fOut = null;
if (Prefs.getCard(this)) {
    baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
    File file = new File(baseDir + fileName);
    fOut = new FileOutputStream(file)
}  else {
    fOut = openFileOutput(fileName, MODE_WORLD_READABLE);
}
if (fOut != null) {
    osw = new OutputStreamWriter(fOut);
    ...
}
于 2012-05-07T13:58:33.980 に答える
0

編集はセブンスによってそれに打ち負かされました:

あなたはこのようなことを試すことができます:

File f = Environment.getExternalStorageDirectory(); 
String fullfilename = f.getAbsoluteFile() + "/Android/data/NameOfApp/fileshere/" ;

File folderToWrite = new File(fullfilename);
folderToWrite.mkdirs();

File fileToWrite = new File(fullfilename,"filename.txt");
于 2012-05-07T14:00:14.537 に答える