ファイルエクスプローラー(ファイルはsdに保存されています)を介してファイルを選択し、それを読み取るアプリケーションがあります。
私はそれを変更したいので、ファイルをアプリに直接入れ、「内部」からファイルを読み取ります。ファイルをプロジェクトのどこに配置する必要がありますか? どうすればアクセスできますか?
次のコードを使用して、プロジェクト内にファイルを保存できます。
File cDir = getApplication().getExternalFilesDir(null);
File saveFilePath = new File(cDir.getPath() + "/" + "yourfilename");
保存されたファイルは、デバイスのアプリケーション パッケージ名の「files」フォルダ内に表示されます。
デバイスで次のパスを試してください。
File manager >> Android >> data >> "your package name" >> files >> new file.
File myExternalFile;
if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) {
saveToExternalStorage.setEnabled(false);
} else {
myExternalFile = new File(getExternalFilesDir(filepath), filename);
}
外部ストレージの保存 (FileOutputStream )
try {
FileOutputStream fos = new FileOutputStream(myExternalFile);
fos.write(myInputText.getText().toString().getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
myInputText.setText("");
responseText.setText("Saved to External Storage.(StorageFile.txt)");
外部ストレージの取得 (FileInputStream )
try {
FileInputStream fis = new FileInputStream(myExternalFile);
BufferedReader br = new BufferedReader(
new InputStreamReader(fis));
String strLine;
while ((strLine = br.readLine()) != null) {
myData = myData + strLine;
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
myInputText.setText(myData);
responseText
.setText("Data retrieved from Internal Storage.(StorageFile.txt)");
はい、ファイルを /assets フォルダーに入れて、次のように取得できます。
AssetManager assetManager = getAssets();
InputStream instream = assetManager.open("file.txt");
または res/raw フォルダー:
InputStream raw = getResources().openRawResource(R.raw.file);
変更する場合は、ファイルを外部ストレージ (sdcard など) または内部ストレージ (アプリケーション フォルダーの下) にのみ書き込むことができますdata/data/package_name/
。ファイルを外部ストレージに保存すると、ユーザーが手動またはプログラムでファイルを削除するまで保持されます。ただし、このファイルを内部ストレージに保存すると、ユーザーがアプリを削除するか、アプリケーションのキャッシュをクリアすると削除されます。