such solucion permission ejemplo denegado acceso java io filenotfoundexception fileinputstream

permission - java.io.filenotfoundexception solucion



java.io.FileNotFoundException al crear FileInputStream (2)

Proporciona una ruta relativa para el archivo. Eso significa que el programa buscará el archivo relativo al directorio de trabajo.

Dependiendo de cómo ejecute el programa, será el directorio desde donde lo ejecute (si se ejecuta desde Shell / Cmd) o lo que sea que esté configurado en la configuración del proyecto (si se ejecuta desde el IDE). Para este último, depende del IDE pero generalmente es el directorio raíz del proyecto.

Más información sobre el directorio de trabajo: https://en.wikipedia.org/wiki/Working_directory
Más información sobre la ruta relativa: https://en.wikipedia.org/wiki/Path_(computing)#Absolute_and_relative_paths

Con respecto a la creación del archivo, crearía un archivo no existente si tuviera que escribir en él. Cuando lo lees, espera que exista. Eso significa que tiene que crear un archivo vacío (si no existe uno) antes de leerlo o simplemente tratar la excepción como contenido vacío .

Obteniendo un error al intentar abrir un FileInputStream para cargar Map desde el archivo con la extensión .ser.

Constructor donde creo un nuevo archivo e invoco el método que carga el mapa del archivo:

protected DriveatorImpl() { accounts = new ConcurrentHashMap<String, Client>(); db = new File("database.ser"); // oddly this does not create a file if one does not exist loadDB(); } @SuppressWarnings("unchecked") private void loadDB() { try { fileIn = new FileInputStream(db); in = new ObjectInputStream(fileIn); accounts = (Map<String, Client>) in.readObject(); in.close(); fileIn.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } }

Intenté crear un archivo manualmente y ponerlo en el mismo paquete con la clase, pero no ayuda. ¡¿Que esta pasando?!

¡Gracias!


  • La ruta al archivo que ha dado puede ser incorrecta para IDE, puede tomar la ruta relativa, pero desde la línea de comando, tomará la ruta absoluta .