Najlepszy samouczek Lua pliku I / O W 2024 r. W tym samouczku możesz dowiedzieć się Tryb prosty,Tryb Pełny,
Lua I / O biblioteki do czytania i przetwarzania plików. Podzielony na prostych wzorów (jak C), pełnym trybie.
W trybie prostym zrobić kilka prostych operacji na plikach, gdy bardziej odpowiednie. Ale po pewnym zaawansowanych operacji plików, prosty model wydaje się być niewystarczające. Na przykład podczas czytania tę operację wiele plików, użyj Pełny tryb jest bardziej odpowiedni.
Zestawienie operacji otwartego pliku jest następująca:
file = io.open (filename [, mode])
Tryb Wartość są:
tryb | opis |
---|---|
R | Otwarty tylko do odczytu pliku, musi istnieć plik. |
w | Otwórz plik tylko do zapisu, jeśli plik istnieje, długość plik jest kasowany na 0, to znaczy, że zawartość pliku zniknie. Jeśli plik nie istnieje, utwórz plik. |
W dodatkowym pliku tylko do zapisu jest otwarty. Jeśli plik nie istnieje, utworzenie pliku, jeśli plik istnieje, dane zapisu zostaną dodane na końcu pliku, zawartość oryginalnego pliku zostanie zachowana. (Znak EOF zastrzeżone) | |
R + | Zarówno czytanie i pisanie, aby otworzyć plik, musi istnieć plik. |
w + | Otwarty na odczyt i zapis plików, jeśli plik istnieje, długość pliku zero wątpliwości, że zawartość pliku zniknie. Jeśli plik nie istnieje, utwórz plik. |
a + | I podobnie, ale jest to plik do odczytu i zapisu |
b | Tryb binarny, jeżeli jest to plik binarny, można dodać B |
+ | Znak wskazuje plik może albo czytać i pisać |
Tryb prosty wykorzystaniem standardu I / O lub użyć bieżącego pliku wejściowego i aktualny plik wyjściowy.
Poniżej znajduje file.lua kod pliku, plik test.lua pracy (jeśli nie trzeba utworzyć plik), w następujący sposób:
-- 以只读方式打开文件 file = io.open("test.lua", "r") -- 设置默认输入文件为 test.lua io.input(file) -- 输出文件第一行 print(io.read()) -- 关闭打开的文件 io.close(file) -- 以附加的方式打开只写文件 file = io.open("test.lua", "a") -- 设置默认输出文件为 test.lua io.output(file) -- 在文件最后一行添加 Lua 注释 io.write("-- test.lua 文件末尾注释") -- 关闭打开的文件 io.close(file)
Realizacja powyższego kodu, można zauważyć, że pierwsza linia informacji test.ua plik wyjściowy i ostatni wiersz w pliku dodać lua komentarze. Jestem tu jako wyjście jest:
-- test.lua 文件
W powyższym przykładzie użyto IO "X", w którym io.read (), to nie ma parametrów, parametr może być jednym z poniższej tabeli:
tryb | opis |
---|---|
"* N" | Wiele jest czytany i powrócił go. Przykład: file.read ( "* n") |
"* A" | Czytaj cały plik z bieżącej lokalizacji. Przykład: file.read ( "* a") |
"* L" (domyślnie) | Czyta następną linię na końcu pliku (EOF) co zwraca zero. Przykład: file.read ( "* l") |
liczba | Zwraca określoną liczbę znaków w łańcuchu lub gdy EOF zwraca nil. Przykład: file.read (5) |
Inne metody IO są:
io.tmpfile (): zwraca uchwyt do pliku tymczasowego, plik zostanie otwarty w trybie aktualizacji automatycznie usuwane po końce programu
io.type (Plik): wykrywanie, czy plik obj uchwyty dostępne
io.flush (): write buffer wszystkich danych do pliku
io.lines (opcjonalnie nazwa pliku): Zwraca iterator, każde wywołanie dostanie linię w pliku, gdy koniec pliku, zwróci nil, ale nie zamyka plik
Zazwyczaj trzeba uporać się z wielu plików w tym samym czasie. Musimy użyć pliku: nazwa_funkcji zamiast metod io.function_name. Poniższy przykład demonstruje samego pliku w tym samym czasie, jak:
-- 以只读方式打开文件 file = io.open("test.lua", "r") -- 输出文件第一行 print(file:read()) -- 关闭打开的文件 file:close() -- 以附加的方式打开只写文件 file = io.open("test.lua", "a") -- 在文件最后一行添加 Lua 注释 file:write("--test") -- 关闭打开的文件 file:close()
Realizacja powyższego kodu, można zauważyć, że pierwsza linia informacji test.ua plik wyjściowy i ostatni wiersz w pliku dodać lua komentarze. Jestem tu jako wyjście jest:
-- test.lua 文件
odczyt parametrów zgodnych z trybu uproszczonego.
Inne metody:
Plik: seek (opcjonalnie skąd opcjonalnie offset): ustawić i pobrać aktualną pozycję pliku, sukces, zwraca ostateczne położenie pliku (w bajtach), nie nil oraz zwracany jest komunikat o błędzie.Wartości parametrów, skąd mogą być:
Plik: flush (): write buffer wszystkich danych do pliku
io.lines (opcjonalnie nazwa pliku): otworzyć określonego trybu odczytu pliku Nazwa pliku i zwraca iterator, każde wywołanie złoży linię, gdy koniec pliku, zwróci nil i automatycznie zamyka plik.
Jeśli parametry taśmowe io.lines () <=> io.input (): linie (); domyślne urządzenie wejściowe, aby odczytać zawartość, ale do końca nie zamyka pliku, takie jak
for line in io.lines("main.lua") do print(line) end
W poniższym przykładzie użyto poszukują metod, aby zlokalizować położenie pliku przedostatnie 25 i zastosować metodę odczytu * parametr, przeczytaj cały plik z bieżącej lokalizacji (przedostatnia pozycja 25).
-- 以只读方式打开文件 file = io.open("test.lua", "r") file:seek("end",-25) print(file:read("*a")) -- 关闭打开的文件 file:close()
Mój wynik jest wyjście tutaj:
st.lua 文件末尾--test