Почему файл.txt не сохраняется во внутреннем хранилище?
Я могу создать и поделиться файлом.txt, используя следующий код:
File path = new File(Environment.getExternalStorageDirectory(), "Folder");
if (!path.exists()) {
path.mkdirs();
}
File exportFile = new File(path, fileName);
FileWriter writer = new FileWriter(exportFile);
writer.append(body);
writer.flush();
writer.close();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(exportFile));
startActivity(intent);
Однако я хотел бы, чтобы этот файл был сохранен в папке приложения, а не на SD-карте напрямую, поэтому я изменил код ниже. Кажется, он не работает, поскольку не создает файл, и любое приложение, которое я пытаюсь экспортировать, не видит файл.
File path = new File(this.getFilesDir(), "exports");
if(!path.exists()){
path.mkdir();
}
Есть идеи? Все, что я пробовал, не работает. Файл должен быть сохранен в папке Android/data/[имя пакета] да?
РЕДАКТИРОВАТЬ: Хорошо, я не мог заставить это работать, но на самом деле обнаружил, что это не тот метод, который я хотел использовать, я хотел сохранить файл в папке Android / data и для этого мне нужно было использовать:
getExternalFilesDir(null)
2 ответа
Проверьте
ContextWrapper contextWrapper = new ContextWrapper(context);
File file = contextWrapper.getDir("media", Context.MODE_PRIVATE);
А также убедитесь, что у вас есть необходимые разрешения в вашем manifest
файл
- проверьте наличие разрешений в вашем AndroidManifest.xml
- проверить наличие каталога
- проверить наличие внешнего хранилища
- проверьте имя файла. Он не должен содержать пробелов
- проверьте наличие разрешений для записи в эту папку