0Pricing
Lua Academy · Ders

io.open ile Dosya Açma

Dosyaları okuma, yazma ve sona ekleme kiplerinde io.open kullanarak açın.

io.open ile Dosya Açma, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

io.open Sözdizimi

io.open(filename, mode) bir dosyayı açar ve bir dosya tanıtıcısı döndürür; başarısızlık durumunda nil ile birlikte bir hata iletisi döndürür. Kip dizgeleri: "r" okuma (varsayılan), "w" yazma (kısaltır), "a" sona ekleme, "r+" okuma/yazma, ikili kip için "b" son eki.

local f, err = io.open("test.txt", "w")
if not f then
  print("Error:", err)
  return
end
f:write("Hello, Lua!\n")
f:close()
print("Written successfully")

Okuma Kipi

Mevcut bir dosyayı okumak için "r" kipinde açın. Her zaman nil denetimi yapın; dosya yoksa io.open nil ve bir hata iletisi döndürür. Dosyanın mevcut olduğunu asla varsaymayın.

local f, err = io.open("test.txt", "r")
if not f then
  print("Cannot open:", err)
  return
end
local content = f:read("*a")  -- read all
f:close()
print(content)

Yazma ve Sona Ekleme Kipleri

"w" dosyayı oluşturur veya kısaltır. "a" gerekirse dosyayı oluşturur ve her zaman sonuna ekleme yapar. Önceki içeriği kaybetmek istemediğiniz günlük dosyaları için sona ekleme kipini kullanın.

-- Write (creates/truncates)
local f = io.open("log.txt", "w")
f:write("Session started\n")
f:close()

-- Append (adds to end)
local g = io.open("log.txt", "a")
g:write("Event: login\n")
g:write("Event: action\n")
g:close()

İkili Kip

İkili okuma/yazma için herhangi bir kipe "b" ekleyin. Unix'te metin ve ikili kipler aynıdır. Windows'ta metin kipi \n karakterini \r\n karakterine dönüştürür; ikili kip bunu devre dışı bırakır. Metin olmayan dosyalar için her zaman ikili kipi kullanın.

-- Binary read
local f = io.open("image.png", "rb")
if f then
  local header = f:read(8)   -- read 8 bytes
  f:close()
  -- Check PNG magic number: \137PNG\r\n\26\n
  print("Read", #header, "bytes")
end

-- Binary write
local g = io.open("out.bin", "wb")
if g then
  g:write(string.char(0x89, 0x50, 0x4E, 0x47))
  g:close()
end

Dosya Tanıtıcısı Yöntemleri

Bir dosya tanıtıcısının (io.open tarafından döndürülür) şu yöntemleri vardır: f:read(...), f:write(...), f:lines(), f:seek(whence, offset), f:flush(), f:close(). Bunları tanıtıcı üzerinde iki nokta sözdizimiyle çağırın.

local f = io.open("data.txt", "w")
f:write("line 1\n")
f:write("line 2\n")
f:write("line 3\n")
f:flush()   -- force write to disk
f:close()

local g = io.open("data.txt", "r")
for line in g:lines() do
  print(line)
end
g:close()

io.input ve io.output

io.input(f) varsayılan girdi dosyasını ayarlar; io.output(f) varsayılan çıktıyı ayarlar. io.read() geçerli girdiden okur; io.write() geçerli çıktıya yazar. Varsayılan girdi stdin, varsayılan çıktı stdout'tur.

-- Read from stdin (default input)
local line = io.read()  -- reads one line
print("You entered:", line)

-- Set default output to a file
io.output("out.txt")
io.write("This goes to out.txt\n")
io.output(io.stdout)  -- restore stdout

Dosyanın Var Olup Olmadığını Denetleme

Lua'da file.exists() yoktur; ancak okuma kipinde io.open kullanabilirsiniz. İşlem başarısız olursa dosya yoktur (veya dosyaya erişilemiyordur). Alternatif olarak POSIX sistemlerinde os.execute ya da lfs kütüphanesini kullanabilirsiniz.

local function fileExists(path)
  local f = io.open(path, "r")
  if f then f:close(); return true end
  return false
end

print(fileExists("test.txt"))     -- true/false
print(fileExists("noexist.txt"))  -- false

Kiplerle Okuma

f:read() biçim dizelerini kabul eder: "l" veya "*l" bir satır okur (satır sonunu kaldırır); "L" satır sonunu korur; "n" bir sayı okur; "a" veya "*a" EOF'a kadar okur; bir sayı, o kadar bayt okur.

local f = io.open("data.txt", "r")
if f then
  local line1 = f:read("l")   -- first line, no newline
  local num   = f:read("n")   -- next number in file
  local rest  = f:read("a")   -- rest of file
  f:close()
  print(type(line1), type(num))
end

Geçici Dosyalar

io.tmpfile() okuma/yazma kipinde bir geçici dosya açar. Dosya, program sona erdiğinde veya tutamacın çöp toplayıcısı tarafından toplanmasıyla otomatik olarak silinir. Dosya adlarını yönetmeden ara işlemler yapmak için kullanabilirsiniz.

local tmp = io.tmpfile()
tmp:write("temporary data\n")
tmp:write("more data\n")

-- Seek back to start and read
tmp:seek("set", 0)
local content = tmp:read("a")
print(content)
-- File auto-deleted when tmp is collected

lines() ile Satırları Yineleme

f:lines() her seferinde bir satır okuyan bir yineleyici döndürür. Yineleyici tükendiğinde dosyayı otomatik olarak kapatır. Bu yöntem büyük dosyalarda bellek açısından verimlidir; dosyanın tamamını tek seferde belleğe yüklemez.

local function countLines(path)
  local count = 0
  local f, err = io.open(path, "r")
  if not f then return nil, err end
  for _ in f:lines() do
    count = count + 1
  end
  -- f is closed automatically by lines()
  return count
end

local n, err = countLines("data.txt")
print("Lines:", n)

Kısa Denetim

Dosya mevcut değilse io.open("file.txt", "a") ne yapar?

Tekrar: io.open

Özet:

  • io.open(path, mode) bir tutamaç veya nil+error döndürür
  • Kipler: r w a r+ b
  • Tutamaçtan önce her zaman nil denetimi yapın
  • İşiniz bittiğinde f:close() çağırın
  • Bellek açısından verimli satır yineleme için f:lines()
  • Otomatik olarak silinen geçici dosyalar için io.tmpfile()

Sıkça Sorulan Sorular

“io.open ile Dosya Açma” dersi ücretsiz mi?

Evet — “io.open ile Dosya Açma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“io.open ile Dosya Açma” dersinde ne öğreneceğim?

Dosyaları okuma, yazma ve sona ekleme kiplerinde io.open kullanarak açın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“io.open ile Dosya Açma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. io.open ile Dosya Açma
  2. Dosya İçeriğini Okuma
  3. Dosyalara Yazma ve Sona Ekleme
  4. Dosyaları Kapatma ve Hata İşleme
← Lua Academy Sayfasına Dön