Wie der Titel darauf hinweist, habe ich Probleme beim Schreiben von Dateien auf den externen Speicher. Mein Debug-Gerät ist ein Nexus 5. Die Sache ist, ich bin in der Lage, Dateien perfekt vom Gerät zu lesen (ich habe mit denen im Download-Ordner versucht), kann aber nicht schreiben. Mir ist bewusst, dass ich dies tun muss, solange das Gerät nicht mit dem Computer verbunden ist. Aber es funktioniert auch nicht.Schreiben von Dateien auf externen Speicher in Android fehlgeschlagen
In der Tat habe ich versucht, den Zustand der SD-Karte vor dem Schreiben zu lesen (was natürlich nicht funktioniert). Der Zustand zeigte sich als "montiert", entweder wenn das Gerät an meinen PC angeschlossen war oder nicht. Und ich verglich den Zustand mit Environment.MEDIA_MOUNTED_READ_ONLY
und Environment.MEDIA_MOUNTED
ohne Erfolg. Mein Gerät befindet sich in keinem dieser Zustände.
Eine Sache, die Sie wissen müssen, ist, dass mein Telefon keine externe SD-Karte hat, da es eine interne ist. Dies führt dazu, dass mein Gerät ein Verzeichnis "/ storage/emulated/0/..." für den externen Speicher hat.
Ich muss auch darauf hinweisen, dass ich die folgenden Tags in meinem Android-Manifest umgesetzt haben:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
Ich habe keine Ahnung, was passiert sein könnte. Eine andere Sache, die helfen könnte, ist, dass ich versucht habe, Dateien mit winrar (für Android) zu verwalten, und ich konnte Dateien mit dem Gerät, das mit meinem PC verbunden war, entfernen, ohne es verbunden zu haben. Also ich weiß nicht was ich machen soll.
Der Code, den ich verwende, um eine Datei zu schreiben, ist der folgende. Beachten Sie, dass es eine Bilddatei lesen sollte (was es tut), wandeln es in einen String, wandeln es wieder in ein Bild und dann speichern Sie es auf den Ordner Downloads:
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/base_image.jpg");
// Reading a Image file from file system
FileInputStream imageInFile = new FileInputStream(file);
byte imageData[] = new byte[(int) file.length()];
imageInFile.read(imageData);
// Converting Image byte array into Base64 String
String imageDataString = encodeImage(imageData);
// Converting a Base64 String into Image byte array
byte[] imageByteArray = decodeImage(imageDataString);
File newFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "converted_image.jpg");
//Write a image byte array into file system
FileOutputStream imageOutFile = new FileOutputStream(newFile);
imageOutFile.write(imageByteArray);
imageInFile.close();
imageOutFile.close();
Was soll ich tun?
Sind Sie sicher, dass die Datei beendet wird, um darauf zu schreiben? – Raghunandan
Ich erstelle eine neue Datei. Oder zumindest versuche ich es. Ich bekomme die Datei nicht gefunden Ausnahme beim Versuch, es zu erstellen und die EACCES (Berechtigung verweigert) Fehler. Das ist mein Hauptproblem hier. Mache ich etwas falsch? – blastervla