Size: a a a

2019 November 13

I

Igor725 in pro.lua
А потом ренеймнуть его
источник

I

Igor725 in pro.lua
Кстати, прошу заметить, что lua-функция os.rename под виндой и linux работает по разному (на всякий написал, если вдруг кроссплатформенность потребуется)
источник

I

Igor725 in pro.lua
под виндой ты не сможешь дать файлу имя уже существующего файла
источник

I

Igor725 in pro.lua
под линуксом таких проблем не возникает
источник

SG

Sergey Gruzdov in pro.lua
Igor725
под виндой ты не сможешь дать файлу имя уже существующего файла
можно
источник

SG

Sergey Gruzdov in pro.lua
CreateFile FILE_FLAG_POSIX_SEMANTICS
источник

I

Igor725 in pro.lua
ну с использованием WinAPI функций можно
источник

I

Igor725 in pro.lua
я говорю именно про os.rename
источник

SG

Sergey Gruzdov in pro.lua
начиная с 10 можно включить case sensetive для каталогов
источник

SG

Sergey Gruzdov in pro.lua
ну это так, занудство
источник

I

Igor725 in pro.lua
Если уж с WinAPI дело иметь то можно и чере MoveFileEx переименовать
источник

I

Igor725 in pro.lua
А не через луёвую os.rename
источник

AS

Anatoliy S in pro.lua
Igor725
под виндой ты не сможешь дать файлу имя уже существующего файла
А в линухе что может быть два и более файлов с одинаковым именем?
источник

p

pragus in pro.lua
Igor725
под виндой ты не сможешь дать файлу имя уже существующего файла
в разных каталогах - всегда можно :)
источник

I

Igor725 in pro.lua
Anatoliy S
А в линухе что может быть два и более файлов с одинаковым именем?
нет, новый файл заменит предыдущий
источник

I

Igor725 in pro.lua
ну если только кейс у букв не разный
источник

I

Igor725 in pro.lua
в линуксе, например tEst и test - разные файлы
источник

I

Igor725 in pro.lua
в винде кейс игнорируется
источник

S

Snusmumriken in pro.lua
Хехе, в целом, можно открыть файл в режиме "rb+", считывать чанк, удалять из него все символы определённого рода, seek-ом отматывать назад и вписывать на старое место обновлённый чанк, запомнив положение. Потом тем же seek-ом отправиться чуть-чуть вперёд и начать сначала. Остатки в конце — забить нулями (размер файла не изменится, зато замена произошла сравнительно быстро).

Собственно, я три дня назад писал функцию удаления из таблицы значений определённого рода. Тут можно сделать то же самое, но для файлов, и с чанками вместо обработки по одному значению:
local arr = {1, 2, 3, 4, 3, 6, 7}

local function array_clear(arr, value)
 local l = #arr
 local p = 1
 for i = 1, l do
   arr[p] = arr[i]
   if arr[i] ~= value then
     p = p + 1
   end
 end
 for i = p, l do
   arr[i] = nil
 end
 return arr
end

array_clear(arr, 3) --> {1, 2, 4, 6, 7}

Нужны два курсора, очевидно: то где мы остановили перезапись и откуда мы берём данные.
источник

p

pragus in pro.lua
Snusmumriken
Хехе, в целом, можно открыть файл в режиме "rb+", считывать чанк, удалять из него все символы определённого рода, seek-ом отматывать назад и вписывать на старое место обновлённый чанк, запомнив положение. Потом тем же seek-ом отправиться чуть-чуть вперёд и начать сначала. Остатки в конце — забить нулями (размер файла не изменится, зато замена произошла сравнительно быстро).

Собственно, я три дня назад писал функцию удаления из таблицы значений определённого рода. Тут можно сделать то же самое, но для файлов, и с чанками вместо обработки по одному значению:
local arr = {1, 2, 3, 4, 3, 6, 7}

local function array_clear(arr, value)
 local l = #arr
 local p = 1
 for i = 1, l do
   arr[p] = arr[i]
   if arr[i] ~= value then
     p = p + 1
   end
 end
 for i = p, l do
   arr[i] = nil
 end
 return arr
end

array_clear(arr, 3) --> {1, 2, 4, 6, 7}

Нужны два курсора, очевидно: то где мы остановили перезапись и откуда мы берём данные.
на linux можно проще.
источник