I have a jobIntentService that create a file to add some text in it but I get the error /data/user/0/com.example.projet/files/log.txt (Is a directory)
. I don’t know what I did wrong…
Here is my code :
JavaScript
x
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());
}
}
Furthermore, what I want is a sort of log file so I want to access it from the phone but /data/user/0/com.example.projet/files/log.txt
is an hidden path to the user…
I already tried Environment.getDataDirectory()
but I don’t have the permission even if they are in the manifest…
Edit : Here is my manifest permissions :
JavaScript
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Thanks for your help !
Advertisement
Answer
With all the comment of you guys this work so there is the final code :
JavaScript
public void ecritureLog(Context context) {
File path = context.getExternalFilesDir(null);
File file = new File(path, "/log.txt");
if (file.exists() && 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());
}
}
Thanks !