Số official documentation không chỉ định. Tôi hiểu EOFError có nghĩa là "Kết thúc lỗi tệp", nhưng điều đó có nghĩa là gì? Nếu một trình đọc tập tin đến cuối tập tin, điều đó không có vẻ giống như một lỗi đối với tôi.EOFError trong tệp I/O Ruby là gì?
Trả lời
EOFError là tiện dụng trong tất cả các IO, lớp đó là cơ sở của tất cả các đầu vào/đầu ra trong ruby. Bây giờ cũng nhớ khái niệm Unix cốt lõi: mọi thứ đều là một tập tin. Điều này bao gồm ổ cắm. Vì vậy, nếu bạn có một số ổ cắm mở và đang đọc từ nó, một điều kiện đặc biệt có thể là để gặp phải một kết thúc của tập tin.
Tất cả các ví dụ hiện có cho thấy sử dụng tầm thường của EOFError (trong khi đọc một số tệp văn bản), điều này không thực sự hữu ích. Tuy nhiên, bắt đầu đào qua net/http hoặc các lớp khác sử dụng ổ cắm rất nhiều và bạn sẽ thấy ngoại lệ này được sử dụng.
Edited để thêm ví dụ này từ net/ftp
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 (Lỗi kết thúc tệp), được ném khi bạn cố thực hiện thao tác trên đối tượng tệp đã tham chiếu đến cuối tệp. Trong ví dụ này, chúng tôi đang cố gắng để readline
khi dòng không tồn tại.
Ví dụ:
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
Điều tương tự cũng có thể đạt được nếu không có sự EOFError:
File.open(filename).each do |line|
sline = FasterCSV.parse_line(line)
# Do stuff with sline
end
cảm ơn cho câu trả lời. tôi hiểu EOFError có nghĩa là "Kết thúc lỗi tệp". nhưng điều đó có nghĩa là gì? Nếu người đọc đến cuối tập tin, điều đó nghe có vẻ không giống với tôi. – Tony
Xin lỗi, làm thế nào ngu ngốc của tôi để không xem xét. Tôi đã cập nhật câu trả lời, nhưng tôi đoán nó vẫn có thể không trả lời câu hỏi của bạn. – Swanand
nếu hai tài khoản đó tương đương với việc xử lý tệp, hãy giúp một chút. cảm ơn – Tony
- 1. "$:" trong ruby là gì?
- 2. EOFError ngắt quãng khi tải tập tin qua ruby OpenURI
- 3. [....] trong Ruby là gì?
- 4. Macro WITH-STANDARD-IO-SYNTAX là gì?
- 5. Chặn IO/Ruby trên Rails
- 6. Loại "VALUE" trong các tệp nguồn Ruby là gì?
- 7. tệp IO, đây có phải là lỗi trong Powershell không?
- 8. Sự khác nhau giữa phụ thuộc maven org.apache.commons: commons-io và commons-io: commons-io là gì?
- 9. "p" trong Ruby là gì?
- 10. là gì "cho" trong Ruby
- 11. "Chính" trong Ruby là gì?
- 12. Tệp IO bên trong CasperJS
- 13. pickle.load() nâng EOFError trong Windows
- 14. Tệp không đồng bộ IO trong .Net
- 15. EOFError bằng Python script
- 16. Bí ẩn EOFError trong Rails 4
- 17. Tương đương với Ruby cho StringReader của Java là gì?
- 18. Gì !! có nghĩa là trong ruby?
- 19. Toán tử || = đứng trong Ruby là gì?
- 20. Chính xác là gì `&: capitalize` trong Ruby?
- 21. @@ có nghĩa là gì trong Ruby?
- 22. Tương đương "sys.stdout.write()" trong Ruby là gì?
- 23. Chuỗi * có nghĩa là gì trong Ruby?
- 24. Trong Ruby, tLABEL có nghĩa là gì?
- 25. || = có nghĩa là gì trong Ruby?
- 26. * (sao) có nghĩa là gì trong Ruby?
- 27. Nhân viên trong ruby / ray là gì?
- 28. Điểm của sợi trong Ruby là gì?
- 29. $ _ [0], $ _ [1] trong Ruby là gì?
- 30. Ý nghĩa của $$ trong Ruby là gì?
+1 Để có câu trả lời hay hơn. – Swanand
Cảm ơn Swanand. Tôi nợ mã ví dụ để sử dụng tìm kiếm yêu thích của tôi ... "tìm /usr/lib/ruby/1.8/net/ -name * .rb -exec grep EOFError/dev/null '{}' \;" –