[Logo]
LUA Форум
  [Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
Функция os.copy(source, destantion)  XML
Индекс форума » LUA: Общие вопросы
Автор Сообщение
__Alexey__
Новичок

Зарегистрирован: 19/05/2008 18:23:35
Сообщений: 9
Оффлайн

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

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

Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 92
Оффлайн

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


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

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

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

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


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

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

Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн

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