Каковы возможные причины java.io.IOException: «Неверный синтаксис имени файла, имени каталога или метки тома» - PullRequest
14 голосов
/ 25 сентября 2008

Я пытаюсь скопировать файл, используя следующий код:

File targetFile = new File(targetPath + File.separator + filename);
...
targetFile.createNewFile();
fileInputStream = new FileInputStream(fileToCopy);
fileOutputStream = new FileOutputStream(targetFile);
byte[] buffer = new byte[64*1024];
int i = 0;
while((i = fileInputStream.read(buffer)) != -1) {
    fileOutputStream.write(buffer, 0, i);
}

Для некоторых пользователей targetFile.createNewFile приводит к этому исключению:

java.io.IOException: The filename, directory name, or volume label syntax is incorrect
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:850)

Имя файла и имя каталога кажутся правильными. Каталог targetPath даже проверяется на существование перед выполнением кода копирования, а имя файла выглядит следующим образом: AB_timestamp.xml

Пользователь имеет права на запись в targetPath и может без проблем скопировать файл с помощью ОС.

Поскольку у меня нет доступа к машине, это все еще происходит, и я не могу воспроизвести проблему на моей собственной машине.

Ответы [ 12 ]

0 голосов
/ 25 сентября 2008

Может быть проблема в том, что он копирует файл по сети, на общий диск? Я думаю, что у java могут быть проблемы при написании файлов с использованием NFS, когда путь похож на папку \ mypc \ myshared.

По какому пути происходит эта проблема?

0 голосов
/ 25 сентября 2008

Проверяете ли вы, что targetPath является каталогом или просто существует что-то с таким именем? (Я знаю, вы говорите, что пользователь может скопировать его из операционной системы, но, возможно, он печатает что-то еще).

У targetPath уже заканчивается File.separator?

(Было бы полезно, если бы вы могли войти в систему и сообщить нам, какое значение targetPath и filename указано в случае ошибки)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...