заводной скрипт Ошибка

Я новичок в groovy. В командной строке (я не использую IDE) я набрал следующее: (Нет проблем с настройками переменных среды, пожалуйста)

groovy -n -e "println line.toLong()" data.txt

Ошибка:

Caught: java.io.IOException: Invalid argument
java.io.IOException: Invalid argument

data.txt находится в этом каталоге (проверено с помощью клавиши TAB)


Не уверен, почему выдает ошибку ????

[data.txt содержит необработанные данные в следующем формате]

1

2

3

4


person Prashant2329    schedule 13.08.2014    source источник
comment
Есть ли в файле эти разрывы строк?   -  person Will    schedule 13.08.2014
comment
Да............ Я использую версию Java 7 и версию Groovy 2.2.2.   -  person Prashant2329    schedule 13.08.2014
comment
Даже если я использую line.reverse() , он выдает ту же ошибку....   -  person Prashant2329    schedule 13.08.2014
comment
Может попробовать прочитать файл вручную? groovy -e ' println new File("data.txt").text '   -  person Will    schedule 13.08.2014
comment
Поймано: groovy.lang.MissingPropertyException: такого свойства нет: данные для класса: script_from_command_line   -  person Prashant2329    schedule 13.08.2014
comment
Что-то не так с вашим скриптом. Как вы писали цитаты?   -  person Will    schedule 13.08.2014
comment
При выполнении groovy -e println новый файл (data.txt).text [см. двойные кавычки вокруг сценария выполнения] M получает эту ошибку: поймано: groovy.lang.MissingPropertyException: нет такого свойства: данные для класса: script_from_command_line   -  person Prashant2329    schedule 14.08.2014
comment
Я написал [двойные кавычки], в которые заключен оператор println [Начальная двойная кавычка находится перед println, а конечная двойная кавычка находится в конце команды], и я также заключил data.txt в двойные кавычки, как я упоминал в комментарии выше. ..   -  person Prashant2329    schedule 14.08.2014
comment
Я использую версию Groovy 2.2.2 ... и это точно не будет проблемой или будет????   -  person Prashant2329    schedule 14.08.2014
comment
Есть ли пустые строки между строками, содержащими числа?   -  person Robby Cornelissen    schedule 14.08.2014
comment
Запустите его в режиме отладки и опубликуйте полную трассировку стека: groovy -d -n -e "println line.toLong()" data.txt   -  person Robby Cornelissen    schedule 14.08.2014
comment
Если я использую систему println, команда завершается успешно. Если я использую строку println, выдает ошибку....   -  person Prashant2329    schedule 14.08.2014
comment
ПОЛНЫЙ STACKTRACE СЛЕДУЕТ: Поймано: java.io.IOException: недопустимый аргумент java.io.IOException: недопустимый аргумент в java.io.WinNTFileSystem.canonicalize0 (собственный метод) в java.io.Win32FileSystem.canonicalize (Win32FileSystem.java:414 ) ... и т. д. и т. д.   -  person Prashant2329    schedule 14.08.2014
comment
@Robby Знаете ли вы, что это: Недопустимый аргумент в java.io.WinNTFileSystem.canonicalize0 (собственный метод) в java.io.Win32FileSystem.canonicalize (Win32FileSystem.java ... ????   -  person Prashant2329    schedule 14.08.2014
comment
Это собственный метод Windows, который выдает исключение. Не знаю почему, я сам не пользователь Windows.   -  person Robby Cornelissen    schedule 14.08.2014
comment
Прости Робби. Я мог бы многого от вас ожидать. Извините 4 это. и, кстати, большое спасибо за быстрый ответ и немедленную помощь. и спасибо Джеймсу А и Уиллу за то, что нашли время помочь мне.   -  person Prashant2329    schedule 14.08.2014
comment
Эти двойные кавычки, по крайней мере, в Linux, неверны. Вам нужно заключить весь скрипт в одинарные кавычки, а строку println — в двойные кавычки, или весь скрипт — в двойные кавычки, а строку println — в одинарные кавычки. Попытка изменить один из них или выполнить командную строку точно так, как я написал в своем комментарии.   -  person Will    schedule 14.08.2014


Ответы (1)


Я попытался воспроизвести проблему с Groovy 2.3.6 и Java 1.7.0_60 в Linux, и у меня не было проблем:

$ echo -e "1\n2\n\3\n\4" > data.txt
$ groovy -n -e "println line.toLong()" data.txt
1
2
3
4

С несуществующим файлом:

$ groovy -n -e "println line.toLong()" bogus.txt
Caught: java.io.FileNotFoundException: bogus.txt
java.io.FileNotFoundException: bogus.txt

С нечисловыми данными:

$ echo -e "a\nb\nc\nd" > data.txt
$ groovy -n -e "println line.toLong()" data.txt
Caught: java.lang.NumberFormatException: For input string: "a"
java.lang.NumberFormatException: For input string: "a"
        at script_from_command_line.run(script_from_command_line:1)

И это даже работало с CR/LF EOL:

$ echo -e "1\r\n2\r\n3\r\n4\r" > data.txt
$ groovy -n -e "println line.toLong()" data.txt
1
2
3
4
person James Allman    schedule 13.08.2014
comment
Мой выдает IOException с неверным аргументом... Я не понимаю, в чем проблема с этим.... - person Prashant2329; 13.08.2014
comment
Prashant2329, попробуйте использовать команду echo, как предлагает JamesA. Ваш файл может иметь некоторые проблемы. - person Will; 13.08.2014
comment
Даже если я передам неправильное имя файла (т.е. несуществующий файл), в отличие от вашего, он выдает тот же неверный аргумент (IOException) ... Вместо этого он должен выдать исключение FileNotFoundException ........ Что не так ???? - person Prashant2329; 13.08.2014
comment
Когда я запускаю команду echo -e 1\n2\n\3\n\4 › data.txt, My data.txt перезаписывается следующими данными: -e 1\n2\n3\n4\n - person Prashant2329; 13.08.2014