En général, que signifie le fait que Java renvoie un & # 8220; Le paramètre est incorrect & # 8221;

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

  •  05-07-2019
  •  | 
  •  

Question

Je crée un fichier comme ça

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

Et je reçois

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'est-ce que le paramètre est incorrect " signifier? Le chemin que j'ai validé existe; ne devrait-il pas simplement créer le nom du fichier? Ceci est sur une machine Windows. Le code fonctionne sans cette erreur sur les systèmes Unix.

Mettre à jour

Vérifié que le fichier existe dans lequel le flux de sortie tente d’écrire. Également vérifié que le fichier est en écriture. Après beaucoup de problèmes, j'ai supprimé le chemin réel et juste passé dans le nom du fichier (non désiré) et cela fonctionne. Donc, le problème a quelque chose à voir avec le chemin. Dois-je échapper aux personnages du chemin?

Était-ce utile?

La solution

Cela ressemble à un rapport de bogue sur les ordinateurs Windows.

Dans des situations normales, un message ressemblant à un chemin d'accès comportant deux points (:) ne faisant pas référence à une lettre de lecteur provoquerait ce message.

Autres conseils

Cela semble être un problème avec le chemin que vous utilisez. Essayez d’utiliser file.getPath () avant de l’ouvrir pour déboguer ce qui se passe dans votre chemin.

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

Si votre " workingDir " est un chemin relatif, alors êtes-vous sûr que vous êtes sur le bon "répertoire actuel"? quand vous avez déplacé votre application d'Unix vers Windows? Peut-être devriez-vous vérifier quel est le répertoire actuel de l'application en cours d'exécution.

Peut-être que l'application n'a pas le bon accès pour écrire dans le fichier? Est-il en lecture seule ou protégé d'une autre manière?

FileOutputStream.open () est une méthode native, je supposerais tout type de message d'exception tel que "Le paramètre est incorrect". provient du système d'exploitation sous-jacent.

BTW: le constructeur de Fichier n'appelle pas FileOutputStream.open () . L'exception ne provient donc pas du code que vous avez publié. ici?

Peut-être que c'est à cause des barres obliques inverses dans le chemin? Chemin trop long? Nom de fichier invalide pour cette erreur (caractères spéciaux ...)?

Je peux me tromper totalement, mais cela vaut la peine d'essayer car cela ressemble à une erreur liée au système d'exploitation.

Assurez-vous que l'utilisateur qui exécute le processus JVM dispose des autorisations nécessaires pour accéder à ce fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top