Java.lang.IllegalArgumentException: contiene un separador de ruta

Tengo un nombre de archivo en mi código como:

String NAME_OF_FILE="//sdcard//imageq.png"; FileInputStream fis =this.openFileInput(NAME_OF_FILE); // 2nd line 

Recibo un error en la segunda línea:

05-11 16: 49: 06.355: ERROR / AndroidRuntime (4570): Causado por: java.lang.IllegalArgumentException: Archivo //sdcard//imageq.png contiene un separador de ruta

He intentado este formato también:

 String NAME_OF_FILE="/sdcard/imageq.png"; 

Este método abre un archivo en el área de datos privados de la aplicación. No puede abrir ningún archivo en subdirectorios en esta área o desde otras áreas completamente utilizando este método. Así que utilice el constructor de FileInputStream directamente para pasar la ruta con un directorio en ella.

La solucion es:

 FileInputStream fis = new FileInputStream (new File(NAME_OF_FILE)); // 2nd line 

El método openFileInput no acepta separadores de ruta.

No te olvides de

 fis.close(); 

al final.

OpenFileInput () no acepta rutas, sólo un nombre de archivo si desea acceder a una ruta, use nuevo File (path) y el archivo FileInputStream correspondiente

No puede utilizar la ruta con separadores de directorio directamente, pero tendrá que crear un objeto de archivo para cada directorio.

NOTA: Este código hace directorios, el suyo puede no necesitar eso …

 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); 
 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); 

He resuelto este tipo de error mediante la creación de un directorio en el evento onCreate, a continuación, acceder al directorio mediante la creación de un nuevo objeto de archivo en un método que tiene que hacer algo como salvar o recuperar un archivo en ese directorio, espero que esto ayude!

  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 } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.