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 

Me sale un error en la 2da línea:

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

Intenté 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 usando este método. Entonces use 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 olvides

 fis.close(); 

al final.

openFileInput() no acepta rutas, solo un nombre de archivo si desea acceder a una ruta, use File file = new File(path) y FileInputStream correspondiente

No puede usar la ruta con los separadores de directorio directamente, pero deberá 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); 

Resolví este tipo de error creando un directorio en el evento onCreate, luego accediendo al directorio creando un nuevo objeto de archivo en un método que necesita hacer algo como guardar 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 } } 

openFileInput("/Dir/data.txt") mensaje de error anterior al intentar acceder a un archivo desde Internal Storage utilizando el openFileInput("/Dir/data.txt") con el subdirectorio Dir .

No puede acceder a los subdirectorios utilizando el método anterior.

Pruebe algo como:

 FileInputStream fIS = new FileInputStream (new File("/Dir/data.txt"));