Tengo el error de título de la publicación cuando intento escribir un archivo en una carpeta de ventana, montado en el sistema Unix. Desarrollé un servicio web que se ejecuta dentro de un Tomcat 6 en un sistema operativo Linux y necesito escribir en una carpeta de red de Windows. Los administradores del sistema lo han montado en el servidor Linux y no tienen problemas para crear y modificar un archivo en él. Cuando trato de ejecutar el código publicado consigo la siguiente excepción:java.io.IOException: Permiso denegado en la carpeta de red
ha denegado el permiso java.io.IOException: Permiso denegado en java.io.UnixFileSystem.createFileExclusively (Nativo Método) en java.io.File .createNewFile (File.java:850)
Lo raro es que parece estar relacionado con el método File.createNewFile en una carpeta de red, de hecho el servicio puede escribir en el sistema de archivos local sin problemas, ambos en depuración (la pc que uso para desarrollar el servicio) y una carpeta de tomcat que los administradores del sistema me proporcionaron en el servidor de Linux. El archivo se crea pero está vacío y la entrada de registro que sigue al método de creación no se imprime. Además, si uso una salida de salida simple para crear y escribir el archivo, no tengo problemas.
No encuentro ninguna explicación sobre la excepción en la web. Como no tengo mucha experiencia con Java, me gustaría entender por qué me aparece este error. ¿Lo estoy usando de la manera incorrecta? ¿Es un error de la biblioteca? ¿Extraño pasar algún parámetro? Como dije, he resuelto el problema usando una salida de salida simple, esta es una pregunta para mejorar mi comprensión de Java.
FileOutputStream fos = null;
try{
log.info(String.format("file length: %s",streamAttach.length));
log.info(String.format("check File : %s",filename));
File f = new File(filename);
if(f.exists())
...
boolean done= f.createNewFile();//here comes the exception
//nothing of the following happens
if(!done)
throw new NWSException("error creating file");
log.info(String.format("file %s creato", nomeFile));
gracias de antemano por cualquier respuesta
suena como un problema de permisos en el cuadro de Linux. ¿Has probado chmod? – dimitrisli
administrador del sistema dice que los permisos son correctos, puede crear un archivo en la carpeta montada y modificarlo con vi. Lo que no puedo entender es por qué el método de clase File falla mientras el archivooutputstream funciona y por qué funciona en "carpeta local" mientras falla en el montado –