Normalmente, ¿qué significa cuando java devuelve un & # 8220; el parámetro es incorrecto & # 8221;

StackOverflow https://stackoverflow.com/questions/1208566

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy creando un archivo como este

try {
    File file = new File(workingDir, obj.getName() + ".xls");
    outputStream = new FileOutputStream(file);
} catch (FileNotFoundException ex) {
    ex.printStackTrace();
}

Y estoy recibiendo

java.io.FileNotFoundException: ..\a\relative\path\obj_name.xls (The parameter is incorrect)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)

¿Qué hace que " el parámetro es incorrecto " ¿media? La ruta de acceso que validé existe; ¿No debería simplemente crear el nombre del archivo? Esto es en una máquina de Windows. El código funciona sin este error en sistemas basados ??en Unix.


Actualizar

Verificó que existe el archivo en el que la secuencia de salida está intentando escribir. También se verificó que el archivo es de escritura. Después de mucho alboroto, eliminé la ruta real y solo pasé el nombre del archivo (no deseado) y eso funciona. Así que el tema tiene algo que ver con el camino. ¿Necesito escapar de los personajes en el camino?

¿Fue útil?

Solución

Esto se parece a un error reportado en las máquinas con Windows.

En situaciones normales, algo como una ruta que tiene dos puntos (:) en ella y que no hace referencia a una letra de unidad causaría este mensaje.

Otros consejos

Parece ser un problema con la ruta que estás usando. Intente usar file.getPath () antes de abrirlo para depurar lo que está sucediendo con su ruta.

File file = new File(workingDir, obj.getName() + ".xls");
System.out.println("Path="+file.getPath());
outputStream = new FileOutputStream(file);

Si su " workingDir " es una ruta relativa, entonces, ¿está seguro de que está en el " directorio actual " correcto? Cuando moviste tu aplicación de Unix a Windows? Tal vez, debería comprobar cuál es el directorio actual de la aplicación en ejecución.

¿Quizás la aplicación no tiene el acceso correcto para escribir en el archivo? ¿Es de solo lectura o está protegido de otra manera?

FileOutputStream.open () es un método nativo, supongo que cualquier tipo de mensaje de excepción como " El parámetro es incorrecto " viene del sistema operativo subyacente.

BTW: el constructor File no llama a FileOutputStream.open () , por lo que la excepción no proviene realmente del código que publicaste. aquí?

¿Quizás es por las barras invertidas en la ruta? Camino demasiado largo? Nombre de archivo inválido para este error (caracteres especiales ...)?

Puede que esté totalmente equivocado, pero vale la pena intentarlo, ya que suena como un error dependiente del sistema operativo.

Asegúrese de que el usuario que ejecuta el proceso JVM tenga los permisos adecuados para acceder a ese archivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top