SDカードにファイルを作成する方法を探しています。現在、私はこのコードを持っている:私の活動でAndroid:SDカードに作成されたファイルがありません
public class Store {
private final String fileName = "histoires.json";
public void createFile(Context context, String json) {
File file = new File (getDir(context), fileName);
try {
FileOutputStream out = new FileOutputStream(file);
out.write(json.getBytes());
out.flush();
out.close();
} catch (Exception e) {
Log.e("Erreur enregistrement du fichier", e.toString());
}
}
private File getDir(Context context) {
File dir;
if(!isExternalStorageReadable() || !isExternalStorageWritable()) {
dir = context.getFilesDir();
}
else {
dir = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
}
return dir;
}
/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}}
私はちょうどこれを呼び出す:
new Store().createFile(this, json);
問題がある:私は私のファイルを参照してくださいが、常に携帯電話のメモリに。私はgetExternalFilesDir()を使用しました。とにかく、私のファイルをSDカードに保存したくありません。 私はreturn文でGETDIR()の私のdir変数の内容をチェックし、それは次のようになります。 /storage/emulated/0/Android/data/com.histoire_horreur/files/Documents
あなたは私を助けてくださいことはできますか?
をメモリ/ SDカードの場合は、[this](http://stackoverflow.com/q/22219312/2952723) – Harshiv
を確認する必要があります。私はSystem.getenv( "SECONDARY_STORAGE")を使用すると、この結果が出ます:/ storage/sdcard1。それは良いようだが、最初にそれはAndroid/data/com.histoire_horreur/files/Documentsへのすべてのパスを表示せず、2番目のSDカードに何も保存されません...おそらくsdcard1は間違っている? – Cainzer
Androidは外部SDカード/メモリカードにアクセスするための標準的な方法を実装していません。デバイスメーカーによって実装されているため、外部SDカードへのパスと方法はデバイスによって異なります。いくつかの場所では '/ storage/sdcard1'(例えば、Sony Experiaのデバイスの中にいくつかあります)とか、/ storage/extsdcardやその他のものかもしれません。また、アンドロイドAPIレベルによって異なります。だからあなたは別にそれを把握する必要があります。メモリカードディレクトリに書き込もうとしていますか? 'Android/data/data/your.package/files /'? – Harshiv