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

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

C удивлением обнаружил что такая необходимая функция в Lua отсутсвует.
Написал свою:

Работает
Только подумалось мне что наверняка этот вопрос при лучшем знании Lua можно решить элегантнее
(Условие одно: используем только стандартные возможности Lua)
smz
ГУРУ

Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн

Для Linux и ему подобных: вместо "copy" подставить "cp" (и возможно, поменять местами одинарные и двойные кавычки).

Это сообщение было редактировано 2 раз. Последнее обновление произошло в 16/05/2008 00:06:25

mozers™
Новичок

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

Ну да, конечно есть os.execute с помощью которой можно сделать все что может ОС.
Вариант принимается.
Но я как то недолюбливаю ее примитивную реализацию с мигающим окном консоли, поэтому от такого варианта отказался сразу.
А варианты решения без os.execute есть?
smz
ГУРУ

Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн

mozers™ wrote:А варианты решения без os.execute есть?

Кроме вышеприведенных двух, есть вариант использования дополнительных библиотек для Lua. Например, я пользуюсь (неопубликованной) библиотекой SysUtils, которая содержит функцию sysutils.CopyFile.

Это сообщение было редактировано 2 раз. Последнее обновление произошло в 16/05/2008 11:12:35

mozers™
Новичок

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

2smz
Не... Внешние библиотеки - это уже нарушение условий задачи.
Я просто думал что мой код можно переписать более благообразно...
smz
ГУРУ

Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн

mozers™ wrote:2smz
Я просто думал что мой код можно переписать более благообразно...
Пожалуйста. Здесь починены 2 проблемы из 3-х имеющихся в оригинале. Третья - то что входной файл читается сразу целиком - это будет проблемой для файлов размером в несколько гигабайтов. Но это уже оставлено как упражнение для автора.
__Alexey__
Новичок

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



smz
ГУРУ

Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн

__Alexey__ wrote:

Здесь присутствуют все 3 дефекта, имеющиеся в оригинальной версии mozers™
А в дополнение - ещё один: на выходе из ф-ции не восстановлено прежнее значение io.output.

Это сообщение было редактировано 3 раз. Последнее обновление произошло в 19/05/2008 19:46:12

__Alexey__
Новичок

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

Зато 1 строка.
__Alexey__
Новичок

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

Это сообщение было редактировано 3 раз. Последнее обновление произошло в 19/05/2008 22:41:03

smz
ГУРУ

Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн

__Alexey__
Уже лучше, если не считать небрежности. Вот твоя ф-ция с поправками:
__Alexey__
Новичок

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

Нет смысла увеличивать буфер.
Для проверки на вашем железе:



smz
ГУРУ

Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн

__Alexey__ wrote:Нет смысла увеличивать буфер.
Для проверки на вашем железе:

Проверка на моём железе дала оптимальный буфер в размере 8 KB. Но это для меня бесполезные данные, т.к. я не копирую файлы подобными функциями. Пользуюсь либо библиотекой на Си, либо os.execute.
__Alexey__
Новичок

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

Сильно медленней, чем библиотечная функция (на С)?
smz
ГУРУ

Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн

__Alexey__ wrote:Сильно медленней, чем библиотечная функция (на С)?
Библиотечная функция, которую я имел в виду - это просто обёртка вокруг CopyFile из Windows API. К моему удивлению, её скорость при копировании больших файлов практически та же, что и у вышеприведенных Lua функций. Но тут дело не в скорости: просто предпочитаю пользоваться стандартной функцией, а не изобретать велосипед.
 
Индекс форума » LUA: Общие вопросы
Перейти:   
Powered by JForum 2.1.8 © JForum Team