#java #android #android-studio
Вопрос:
У меня есть служба Jobintent, которая создает файл, чтобы добавить в него текст, но я получаю сообщение об ошибке /data/user/0/com.example.projet/files/log.txt (Is a directory)
. Я не знаю, что я сделал не так… Вот мой код :
public void ecritureLog(Context context) {
File path = context.getFilesDir();
File file = new File(path, "log.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (Exception e) {
Log.d("Debug ecriture log", "exeption levée : " e.getMessage());
}
}
try {
FileOutputStream stream = new FileOutputStream(file);
stream.write("text-to-write".getBytes());
stream.close();
} catch (Exception e) {
Log.d("Debug ecriture log", "exeption levée : " e.getMessage());
}
}
Кроме того, мне нужен своего рода файл журнала, поэтому я хочу получить к нему доступ с телефона, но /data/user/0/com.example.projet/files/log.txt
это скрытый путь к пользователю…
Я уже пытался Environment.getDataDirectory()
, но у меня нет разрешения, даже если они есть в манифесте…
Изменить : Вот мои разрешения на манифест :
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Спасибо за вашу помощь !
Комментарии:
1. baeldung.com/java-write-to-file
2. для чтения и записи файлов вам необходимо добавить разрешения на запуск.
3. @Stultuske Проблема на самом деле не в написании, а в создании, потому что log.txt рассматривается как каталог, а не как файл, который я не могу в нем записать… В статье, которую вы мне дали, просто кратко изложено то, что я сделал для написания части…
4. @ahmadbajwa У меня уже есть
READ_EXTERNAL_STORAGE
amp;WRITE_EXTERNAL_STORAGE
. Я не знаю, кого из них не хватает…5. время выполнения означает добавление кода java из этих разрешений.
Ответ №1:
Со всеми вашими комментариями, ребята, это работа, так что есть окончательный код :
public void ecritureLog(Context context) {
File path = context.getExternalFilesDir(null);
File file = new File(path, "/log.txt");
if (file.exists() amp;amp; file.isDirectory() ) {
if (!file.delete()){
Log.d("Debug ecriture log", "!file.delete()");
return;
}
}
try {
FileOutputStream stream = new FileOutputStream(file);
Log.d("Debug ecriture log", "chemin: " file.getAbsolutePath());
stream.write("text-to-write".getBytes());
stream.close();
} catch (Exception e) {
Log.d("Debug ecriture log", "exeption levée : " e.getMessage());
}
}
Спасибо!