rasmiy hujjatlarda aniq belgilanmagan. Men EOFError "Faylning oxiri xatosi" degan ma'noni tushunaman, lekin bu nimani anglatadi? Agar faylni o'quvchi faylning oxiriga yetib qolsa, bu menga xatolik kabi ko'rinmaydi.
Ruby I/O faylida EOFError nima?
Javoblar (2)
EOFError barcha IO-larda qulay, ya'ni ruby-dagi barcha kirish/chiqishning asosi bo'lgan sinf. Endi asosiy Unix tushunchalarini ham eslang: hamma narsa fayl. Bunga rozetkalar kiradi. Shunday qilib, agar sizda rozetka ochiq bo'lsa va undan o'qiyotgan bo'lsangiz, faylning oxiriga duch kelish istisno shart bo'lishi mumkin.
U yerdagi barcha misollar EOFError ning ahamiyatsiz ishlatilishini (ba'zi matnli fayllarni o'qishda) ko'rsatadi, bu haqiqatan ham foydali emas. Biroq, net/http yoki rozetkalardan ko'p foydalanadigan boshqa sinflar orqali qazishni boshlang va siz ushbu istisno ishlatilayotganini ko'rasiz.
Ushbu misolni net/ftp dan qo'shish uchun tahrirlangan
def getline
line = @sock.readline # if get EOF, raise EOFError
line.sub!(/(\r\n|\n|\r)\z/n, "")
if @debug_mode
print "get: ", sanitize(line), "\n"
end
return line
end
EOFError (Fayl oxiri xatosi), fayl oxiriga havola qilingan fayl ob'ektida operatsiyani bajarishga urinayotganda paydo bo'ladi. Ushbu misolda biz chiziq mavjud bo'lmaganda readline
ga harakat qilyapmiz.
Masalan:
import_file = File.open(filename)
begin
while (line = import_file.readline)
sline = FasterCSV.parse_line(line)
# Do stuff with sline
end
rescue EOFError
# Finished processing the file
end
Xuddi shu narsaga EOFErrorsiz erishish mumkin:
File.open(filename).each do |line|
sline = FasterCSV.parse_line(line)
# Do stuff with sline
end