[Logo] LUA Форум
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Функция os.copy(source, destantion)  XML
Forum Index » LUA: Общие вопросы
Author Message
__Alexey__
Новичок

Joined: 19/05/2008 18:23:35
Messages: 9
Offline

mozers поставил вопрос так, что использовать CopyFile нельзя.
Полагаю, ему нужна совместимость без лишних проблем для разных платформ (WIN & GTK & ...) для SciTE.
Для большей схожестью с CopyFile можно добавить проверку на перезапись существующего файла.

К сожалению, решение получилось не элегантное.
z00n
Постоянный посетитель

Joined: 15/02/2008 12:15:56
Messages: 96
Offline

Практически все приведенные здесь функции во первых "глотают" ошибки, которые в io выглядят как nil+message, во-вторых небезопасны в смысле исключений.
Например:


Теперь, например, сделаем 11.gz read-only:

... т.е. первый файл остался открытым до тех пор, пока его не соберет сборщик мусора, так-как исключение не дало вызвать source:close().

Про один из подходов к безопасной работой с ресурсами можно почитать тут: http://lua-users.org/wiki/FinalizedExceptions - Диего Нехаб пишет как он сделал в luasocket.

Я обычно пользуюсь похожим, но более общим (который подходит для Лиспа, Скалы, SML и вообще для любого язака с функциями высших порядков) способом.


Когда все нормально (уберем read-only):

Т.е. все само вовремя закрывается, деструкторы вызываются в порядке, обратном вызову конструкторов. Синтаксис громоздкий, но это Луа В Scala, например, это выглядит намного изящнее:
mozers™
Новичок

Joined: 08/05/2008 16:18:54
Messages: 27
Offline

2z00n
Сильно
Код профессионала сильно отличается от кода новичка - я нефига не понял как работают эти циклы - тупо скопировал все в свой скрипт.
Стандартное решение os.execute("cmd /c copy "..source..destantion) этому и в подметки не годится!
Скорость выполнения выросла более чем в 100 раз!!! (у меня непрерывно копируются маленькие файлы).
Про то, что исчезло это, дико раздражающее, постоянно мигающее консольное окошко я уже не говорю...
Браво, автор!
 
Forum Index » LUA: Общие вопросы
Go to:   
Powered by JForum 2.1.9 © JForum Team