Haskell:
Đọc một tệp văn bản
Cách thực hiện:
Dưới đây là cách bạn khiến Haskell đọc tệp văn bản mà không cần phải vắt mồ hôi. Mở trình chỉnh sửa yêu thích của bạn, và hãy bắt đầu viết một số mã.
import System.IO
main = do
-- Mở một tệp ở chế độ đọc
handle <- openFile "hello.txt" ReadMode
-- Đọc nội dung của tệp
content <- hGetContents handle
-- In nội dung của tệp
putStrLn content
-- Đừng quên đóng cánh tay của tệp!
hClose handle
Chạy điều này, và nếu bạn có “hello.txt” với “Hello, World!” bên trong, bạn sẽ nhận được:
Hello, World!
Dưới đây là một cách ngắn gọn, mạnh mẽ hơn, làm cùng một việc với ít rắc rối hơn:
-- 'readFile' thực hiện mở và đọc lần lượt
main = do
content <- readFile "hello.txt"
putStrLn content
Kết quả vẫn là,
Hello, World!
Đào Sâu
Từ lâu, các chương trình được coi là những sinh vật không xã hội, chủ yếu xử lý dữ liệu do chính chúng tạo ra. Nhưng độ phức tạp tăng lên, và nhu cầu kéo thông tin từ bên ngoài cũng vậy, do đó việc đọc từ các tệp trở thành một nền tảng.
Haskell cung cấp nhiều cách để đọc tệp. Chúng ta có thể làm điều đó theo cách cấp thấp với openFile
, hGetContents
, và hClose
hoặc thực hiện một cách ngầu với readFile
, mà gói gọn mọi thứ một cách ngăn nắp.
readFile
là lười biếng – nó đọc nội dung khi cần thiết, điều này tiết kiệm bộ nhớ cho các tệp lớn nhưng có thể gây ra bất ngờ nếu tệp thay đổi giữa chừng. Cách tiếp cận cấp thấp cho phép kiểm soát nhiều hơn, làm cho nó dễ dự đoán hơn nhưng cũng cồng kềnh hơn. Đối với những văn bản khổng lồ, hGetLine
của Haskell hoặc các thư viện như conduit
và pipes
giúp quản lý bộ nhớ và xử lý một cách tinh tế hơn.
Các hành động IO
chuẩn của Haskell xử lý tệp bằng cách sử dụng các cơ chế của hệ điều hành cơ bản. Các thư viện trừu tượng hóa những điều này thành các hoạt động thân thiện với người dùng hơn nhưng cuối cùng, chúng được xây dựng dựa trên monad IO
của Haskell, đảm bảo các hành động diễn ra theo đúng thứ tự.
Xem Thêm
- Để xem tài liệu chính thức của Haskell, hãy kiểm tra tài liệu nhập và xuất của Haskell.
- Nếu bạn khát khao học hỏi thêm, hãy thưởng thức một tách tri thức tại Learn You a Haskell for Great Good!.
- Làm sâu sắc hơn hiểu biết về quản lý tệp với Real World Haskell’s take on IO.
- Khám phá các thư viện phát trực tuyến cho các tệp lớn với conduit và pipes.