Ich habe einen Dateinamen in meinem Code als:
String NAME_OF_FILE="//sdcard//imageq.png";
FileInputStream fis =this.openFileInput(NAME_OF_FILE); // 2nd line
Ich erhalte eine Fehlermeldung in der 2. Zeile:
05-11 16: 49: 06.355: ERROR / AndroidRuntime (4570): Auslöser: java.lang.IllegalArgumentException: Die Datei //sdcard//imageq.png enthält ein Pfadtrennzeichen
Ich habe dieses Format auch ausprobiert:
String NAME_OF_FILE="/sdcard/imageq.png";
Die Lösung ist:
FileInputStream fis = new FileInputStream (new File(NAME_OF_FILE)); // 2nd line
Die openFileInput-Methode akzeptiert keine Pfadtrennzeichen.
Vergiss es nicht
fis.close();
Am Ende.
quelle
FileInputStream
, warum sollte man sich für die Verwendung entscheidenopenFileInput
?openFileInput()
akzeptiert keine Pfade, nur einen Dateinamen, wenn Sie auf einen Pfad zugreifen möchten, verwendenFile file = new File(path)
und korrespondierenFileInputStream
quelle
Ich habe die obige Fehlermeldung erhalten, als ich versucht habe, mit einer
openFileInput("/Dir/data.txt")
Methode mit Unterverzeichnis aus dem internen Speicher auf eine Datei zuzugreifenDir
.Mit der oben beschriebenen Methode können Sie nicht auf Unterverzeichnisse zugreifen.
Versuchen Sie etwas wie:
FileInputStream fIS = new FileInputStream (new File("/Dir/data.txt"));
quelle
Sie können den Pfad nicht direkt mit Verzeichnistrennzeichen verwenden, müssen jedoch für jedes Verzeichnis ein Dateiobjekt erstellen.
HINWEIS: Dieser Code erstellt Verzeichnisse, die Sie möglicherweise nicht benötigen ...
File file= context.getFilesDir(); file.mkdir(); String[] array=filePath.split("/"); for(int t=0; t< array.length -1 ;t++) { file=new File(file,array[t]); file.mkdir(); } File f=new File(file,array[array.length-1]); RandomAccessFileOutputStream rvalue = new RandomAccessFileOutputStream(f,append);
quelle
File f = new File(fileDirPath); f.mkdirs();
Bitte bearbeitenString all = ""; try { BufferedReader br = new BufferedReader(new FileReader(filePath)); String strLine; while ((strLine = br.readLine()) != null){ all = all + strLine; } } catch (IOException e) { Log.e("notes_err", e.getLocalizedMessage()); }
quelle
File file = context.getFilesDir(); file.mkdir(); String[] array = filePath.split("/"); for(int t = 0; t < array.length - 1; t++) { file = new File(file, array[t]); file.mkdir(); } File f = new File(file,array[array.length- 1]); RandomAccessFileOutputStream rvalue = new RandomAccessFileOutputStream(f, append);
quelle
Ich habe diese Art von Fehler behoben, indem ich im onCreate-Ereignis ein Verzeichnis erstellt und dann auf das Verzeichnis zugegriffen habe, indem ich ein neues Dateiobjekt in einer Methode erstellt habe, die beispielsweise eine Datei in diesem Verzeichnis speichern oder abrufen muss. Ich hoffe, dies hilft!
public class MyClass { private String state; public File myFilename; @Override protected void onCreate(Bundle savedInstanceState) {//create your directory the user will be able to find super.onCreate(savedInstanceState); if (Environment.MEDIA_MOUNTED.equals(state)) { myFilename = new File(Environment.getExternalStorageDirectory().toString() + "/My Directory"); if (!myFilename.exists()) { myFilename.mkdirs(); } } } public void myMethod { File fileTo = new File(myFilename.toString() + "/myPic.png"); // use fileTo object to save your file in your new directory that was created in the onCreate method } }
quelle