Lua - Dosya G / Ç
I / O kütüphanesi, Lua'daki dosyaları okumak ve değiştirmek için kullanılır. Lua'da iki tür dosya işlemi vardır: örtük dosya tanımlayıcıları ve açık dosya tanımlayıcıları.
Aşağıdaki örnekler için, aşağıda gösterildiği gibi örnek bir test.lua dosyası kullanacağız.
-- sample test.lua
-- sample2 test.lua
Basit bir dosya açma işlemi aşağıdaki ifadeyi kullanır.
file = io.open (filename [, mode])
Çeşitli dosya modları aşağıdaki tabloda listelenmiştir.
Sr.No. | Mod ve Açıklama |
---|---|
1 | "r" Salt okunur moddur ve mevcut bir dosyanın açıldığı varsayılan moddur. |
2 | "w" Mevcut dosyanın üzerine yazan veya yeni bir dosya oluşturan yazma etkin mod. |
3 | "a" Mevcut bir dosyayı açan veya eklemek için yeni bir dosya oluşturan Ekleme modu. |
4 | "r+" Mevcut bir dosya için okuma ve yazma modu. |
5 | "w+" Dosya varsa veya okuma yazma izinleriyle yeni dosya oluşturulursa mevcut tüm veriler kaldırılır. |
6 | "a+" Mevcut bir dosyayı açan veya yeni bir dosya oluşturan, okuma modu etkin olan ekleme modu. |
Örtülü Dosya Tanımlayıcıları
Örtük dosya tanımlayıcıları, standart girdi / çıktı modlarını veya tek bir girdi ve tek bir çıktı dosyası kullanır. Örtülü dosya tanımlayıcılarının kullanımına ilişkin bir örnek aşağıda gösterilmiştir.
-- Opens a file in read
file = io.open("test.lua", "r")
-- sets the default input file as test.lua
io.input(file)
-- prints the first line of the file
print(io.read())
-- closes the open file
io.close(file)
-- Opens a file in append mode
file = io.open("test.lua", "a")
-- sets the default output file as test.lua
io.output(file)
-- appends a word test to the last line of the file
io.write("-- End of the test.lua file")
-- closes the open file
io.close(file)
Programı çalıştırdığınızda, test.lua dosyasının ilk satırının çıktısını alacaksınız. Programımız için aşağıdaki çıktıyı aldık.
-- Sample test.lua
Bu, bizim için test.lua dosyasındaki ifadenin ilk satırıydı. Ayrıca test.lua kodunun son satırına "- test.lua dosyasının sonu" satırı eklenir.
Yukarıdaki örnekte, örtük tanımlayıcıların io. "X" yöntemlerini kullanarak dosya sistemiyle nasıl çalıştığını görebilirsiniz. Yukarıdaki örnek, isteğe bağlı parametre olmadan io.read () kullanır. İsteğe bağlı parametre aşağıdakilerden herhangi biri olabilir.
Sr.No. | Mod ve Açıklama |
---|---|
1 | "*n" Geçerli dosya konumundan okur ve dosya konumunda varsa bir sayı döndürür veya sıfır döndürür. |
2 | "*a" Geçerli dosya konumundan dosyanın tüm içeriğini döndürür. |
3 | "*l" Satırı geçerli dosya konumundan okur ve dosya konumunu sonraki satıra taşır. |
4 | number İşlevde belirtilen bayt sayısını okur. |
Diğer yaygın G / Ç yöntemleri şunları içerir:
io.tmpfile() - Program sona erdiğinde silinecek olan geçici bir okuma ve yazma dosyası döndürür.
io.type(file) - Girdi dosyasına göre dosya, kapalı dosya veya nil olup olmadığını döndürür.
io.flush() - Varsayılan çıktı arabelleğini temizler.
io.lines(optional file name)- Dosya adının sağlanması veya varsayılan dosyanın kullanılması ve döngünün sonunda kapatılmaması durumunda dosya içinde döngü yapan ve sonunda dosyayı kapatan genel bir for döngüsü yineleyicisi sağlar .
Açık Dosya Tanımlayıcıları
Genellikle, bir seferde birden fazla dosyayı işlememize izin veren açık dosya tanımlayıcı kullanırız. Bu işlevler, örtük dosya tanımlayıcılara oldukça benzer. Burada io.function_name yerine file: function_name kullanıyoruz. Aynı örtük dosya tanımlayıcı örneğinin dosya sürümünün aşağıdaki örneği aşağıda gösterilmiştir.
-- Opens a file in read mode
file = io.open("test.lua", "r")
-- prints the first line of the file
print(file:read())
-- closes the opened file
file:close()
-- Opens a file in append mode
file = io.open("test.lua", "a")
-- appends a word test to the last line of the file
file:write("--test")
-- closes the open file
file:close()
Programı çalıştırdığınızda, örtük tanımlayıcı örneğiyle benzer bir çıktı elde edeceksiniz.
-- Sample test.lua
Tüm dosya açma modları ve harici tanımlayıcılar için okuma parametreleri, örtük dosya tanımlayıcılarla aynıdır.
Diğer yaygın dosya yöntemleri şunları içerir:
file:seek(optional whence, optional offset)- Parametre "set", "cur" veya "end" olduğundan. Yeni dosya işaretçisini, dosyanın başlangıcından itibaren güncellenmiş dosya konumu ile ayarlar. Bu fonksiyonda ofsetler sıfır tabanlıdır. İlk bağımsız değişken "set" ise, uzaklık dosyanın başlangıcından ölçülür; "cur" ise dosyadaki mevcut konumundan; veya "son" ise dosyanın sonundan. Varsayılan bağımsız değişken değerleri "cur" ve 0'dır, bu nedenle geçerli dosya konumu, bu işlevi bağımsız değişkenler olmadan çağırarak elde edilebilir.
file:flush() - Varsayılan çıktı arabelleğini temizler.
io.lines(optional file name)- Dosya adının sağlanması veya varsayılan dosyanın kullanılması ve döngünün sonunda kapatılmaması durumunda dosya içinde döngü yapan ve sonunda dosyayı kapatan genel bir for döngüsü yineleyicisi sağlar .
Arama yöntemini kullanmak için bir örnek aşağıda gösterilmiştir. İmleci dosyanın bitiminden önce 25 konumdan kaydırır. Okuma işlevi, dosyanın geri kalanını arama konumundan yazdırır.
-- Opens a file in read
file = io.open("test.lua", "r")
file:seek("end",-25)
print(file:read("*a"))
-- closes the opened file
file:close()
Aşağıdakine benzer bir çıktı elde edeceksiniz.
sample2 test.lua
--test
Lua dosya işlemlerinin tam yeteneğini bilmek için tüm farklı modları ve parametreleri oynayabilirsiniz.