Groovy - проблема с созданием файла: неверный синтаксис имени файла, имени каталога или метки тома - PullRequest
0 голосов
/ 28 октября 2010

Я запускаю скрипт, созданный в Groovy из Soap UI, и скрипт должен генерировать много файлов. Эти файлы также имеют в имени два числа из списка (все комбинации в этом списке разные), и существует 1303 комбинации доступно, и скрипт генерирует только 1235 файлов.

Часть кода:

filename = groovyUtils.projectPath + "\\" + "$file"+"_OK.txt";
targetFile = new File(filename);
targetFile.createNewFile();

где $ file на самом деле та часть имени файла, которая включает эти две комбинации из этого списка:

file = "abc" + "-$firstNumer"+"_$secondNumber"

Для тех файлов, которые не созданы, возвращается сообщение: «Неверный синтаксис имени файла, имени каталога или метки тома».

Я пытался указать другой путь:

filename = "D:\\rez\\" + "\\" + "$file"+"_OK.txt";
targetFile = new File(filename);
targetFile.createNewFile(); 

, а также:

File parentFolder = new File("D:\\rez\\");
File targetFile = new File(parentFolder, "$file"+"_OK.txt");
targetFile.createNewFile();

(который я нашел здесь: Каковы возможные причины java.io.IOException: "Неверный синтаксис имени файла, имени каталога или метки тома" ) но ничего не помогло.

У меня нет идей, где проблема. Странно, что 1235 файлов созданы нормально, а остальные, 68 вообще не созданы.

Спасибо

Ответы [ 2 ]

1 голос
/ 28 октября 2010

File.createNewFile() возвращает false, если файл или каталог с таким именем уже существует.Во всех других случаях сбоя (безопасность, ввод / вывод) генерируется исключение.

Оцените возвращаемое значение createNewFile() или, кроме того, используйте метод File.exists():

File file = new File("foo")
// works the first time
createNewFile(file)
// prints an error message
createNewFile(file)

void createNewFile(File file) {
    if (!file.createNewFile()) {
        assert file.exists()
        println file.getPath() + " already exists."
    }
}
1 голос
/ 28 октября 2010

Я предполагаю, что в некоторых файлах есть недопустимые символы в путях. То, какие символы являются недопустимыми, зависит от платформы, например на винде они

\ /: *? "<> |

Почему вы не регистрируете полный путь к файлу до вызова targetFile.createNewFile();, а также регистрируете, успешно или нет этот метод, например,

filename = groovyUtils.projectPath + "\\" + "$file"+"_OK.txt";
targetFile = new File(filename);
println "attempting to create file: $targetFile"

if (targetFile.createNewFile()) {
    println "Successfully created file $targetFile"
} else {
    println "Failed to create file $targetFile"
}

Когда процесс завершится, проверьте журналы, и я подозреваю, что вы увидите общий шаблон в сообщениях "Не удалось создать файл ...."

...