Euphoria - Tệp I / O
Sử dụng ngôn ngữ lập trình Euphoria, bạn có thể viết các chương trình đọc và thay đổi dữ liệu tệp trên ổ đĩa mềm hoặc ổ cứng hoặc tạo tệp mới dưới dạng đầu ra. Bạn thậm chí có thể truy cập các thiết bị trên máy tính của mình như máy in và modem.
Chương này mô tả tất cả các chức năng I / O cơ bản có trong Euphoria. Để biết thêm thông tin về các chức năng khác, vui lòng tham khảo tài liệu Euphoria tiêu chuẩn.
Hiển thị trên màn hình
Cách đơn giản nhất để tạo ra kết quả là sử dụng câu lệnh put () trong đó bạn có thể chuyển bất kỳ chuỗi nào được hiển thị trên màn hình. Có một phương thức printf () khác cũng có thể được sử dụng trong trường hợp bạn phải định dạng một chuỗi sử dụng các giá trị động.
Các phương thức này chuyển đổi các biểu thức bạn chuyển chúng thành một chuỗi và ghi kết quả vào đầu ra chuẩn như sau:
#!/home/euphoria-4.0b2/bin/eui
puts(1, "Euphoria is really a great language, isn't it?" )
Điều này tạo ra kết quả sau trên màn hình tiêu chuẩn của bạn:
Euphoria is really a great language, isn't it?
Mở và đóng tệp
Euphoria cung cấp các phương thức cơ bản cần thiết để thao tác với tệp theo mặc định. Bạn có thể thực hiện hầu hết các thao tác với tệp bằng các phương pháp sau:
- open()
- close()
- printf()
- gets()
- getc()
Các mở Phương pháp
Trước khi có thể đọc hoặc ghi một tệp, bạn phải mở tệp đó bằng phương thức open () có sẵn của Euphoria . Hàm này tạo một bộ mô tả tệp được sử dụng để gọi các phương thức hỗ trợ khác được liên kết với nó.
Cú pháp
integer file_num = open(file_name, access_mode)
Phương thức trên trả về -1 trong trường hợp có lỗi khi mở tên tệp đã cho. Đây là các thông số -
file_name - Đối số tên tệp là một giá trị chuỗi có chứa tên của tệp mà bạn muốn truy cập.
access_mode- Access_mode xác định chế độ mà tệp phải được mở. Ví dụ: đọc, ghi phần phụ, v.v. Danh sách đầy đủ các giá trị có thể có cho các chế độ mở tệp được đưa ra trong bảng sau:
S. không | Chế độ & Mô tả |
---|---|
1 | r Mở một tệp văn bản chỉ để đọc. Con trỏ tệp được đặt ở đầu tệp. |
2 | rb Mở tệp chỉ để đọc ở định dạng nhị phân. Con trỏ tệp được đặt ở đầu tệp. |
3 | w Mở tệp văn bản chỉ để viết. Ghi đè tệp nếu tệp tồn tại. Nếu tệp không tồn tại, hãy tạo một tệp mới để ghi. |
4 | wb Mở tệp chỉ để ghi ở định dạng nhị phân. Ghi đè tệp nếu tệp tồn tại. Nếu tệp không tồn tại, hãy tạo một tệp mới để ghi. |
5 | u Mở tệp để đọc và ghi. Con trỏ tệp được đặt ở đầu tệp. |
6 | ub Mở tệp để đọc và ghi ở định dạng nhị phân. Con trỏ tệp được đặt ở đầu tệp. |
7 | a Mở một tệp để bổ sung. Con trỏ tệp ở cuối tệp nếu tệp tồn tại (chế độ nối thêm). Nếu tệp không tồn tại, nó sẽ tạo một tệp mới để ghi. |
số 8 | ab Mở tệp để thêm vào ở định dạng nhị phân. Con trỏ tệp ở cuối tệp nếu tệp tồn tại (chế độ nối thêm). Nếu tệp không tồn tại, nó sẽ tạo một tệp mới để ghi. |
Thí dụ
Ví dụ sau tạo một tệp văn bản mới trong thư mục hiện tại trên hệ thống Linux của bạn -
#!/home/euphoria-4.0b2/bin/eui
integer file_num
constant ERROR = 2
constant STDOUT = 1
file_num = open("myfile,txt", "w")
if file_num = -1 then
puts(ERROR, "couldn't open myfile\n")
else
puts(STDOUT, "File opend successfully\n")
end if
Nếu tệp mở thành công, thì tệp "myfile.txt" được tạo trong thư mục hiện tại của bạn và tạo ra kết quả sau:
File opend successfully
Các close () Phương pháp
Phương thức close () xóa bất kỳ thông tin không thành văn nào và đóng tệp, sau đó không thể đọc hoặc ghi nữa trên tệp.
Euphoria tự động đóng tệp khi đối tượng tham chiếu của tệp được gán lại cho tệp khác. Bạn nên sử dụng phương thức close () để đóng tệp.
Cú pháp
close( file_num );
Ở đây, bộ mô tả tệp nhận được trong khi mở tệp được chuyển dưới dạng tham số.
Thí dụ
Ví dụ sau tạo một tệp như trên và sau đó đóng nó trước khi chương trình tồn tại:
#!/home/euphoria-4.0b2/bin/eui
integer file_num
constant ERROR = 2
constant STDOUT = 1
file_num = open("myfile.txt", "w")
if file_num = -1 then
puts(ERROR, "couldn't open myfile\n")
else
puts(STDOUT, "File opend successfully\n")
end if
if file_num = -1 then
puts(ERROR, "No need to close the file\n")
else
close( file_num )
puts(STDOUT, "File closed successfully\n")
end if
Điều này tạo ra kết quả sau:
File opend successfully
File closed successfully
Đọc và ghi tệp
Euphoria cung cấp một tập hợp các phương pháp truy cập để giúp cuộc sống của chúng ta dễ dàng hơn khi đọc hoặc ghi tệp ở chế độ văn bản hoặc chế độ nhị phân. Hãy để chúng tôi xem cách sử dụng phương thức printf () và get () để đọc và ghi tệp.
Các printf () Phương pháp
Phương thức printf () ghi bất kỳ chuỗi nào vào một tệp đang mở.
Cú pháp
printf(fn, st, x)
Đây là các thông số -
fn - Bộ mô tả tệp nhận được từ phương thức open ().
st - Định dạng chuỗi trong đó số thập phân hoặc nguyên tử được định dạng bằng% d và chuỗi hoặc chuỗi được định dạng bằng% s.
x- Nếu x là một dãy thì các định dạng từ st được ghép với các phần tử tương ứng của x. Nếu x là nguyên tử, thì st thường chỉ chứa một định dạng định dạng và nó được áp dụng cho x. Tuy nhiên; nếu st chứa nhiều định dạng định dạng, thì mỗi định dạng được áp dụng cho cùng một giá trị x.
Thí dụ
Ví dụ sau sẽ mở một tệp và viết tên và tuổi của một người trong tệp này:
#!/home/euphoria-4.0b2/bin/eui
integer file_num
constant ERROR = 2
constant STDOUT = 1
file_num = open("myfile.txt", "w")
if file_num = -1 then
puts(ERROR, "couldn't open myfile\n")
else
puts(STDOUT, "File opend successfully\n")
end if
printf(file_num, "My name is %s and age is %d\n", {"Zara", 8})
if file_num = -1 then
puts(ERROR, "No need to close the file\n")
else
close( file_num )
puts(STDOUT, "File closed successfully\n")
end if
Ví dụ trên tạo tệp myfile.txt . Là ghi nội dung đã cho vào tệp đó và cuối cùng đóng lại. Nếu bạn mở tệp này, nó sẽ có nội dung sau:
My name is Zara and age is 8
Các nhận () Phương pháp
Phương thức get () đọc một chuỗi từ một tệp đang mở.
Cú pháp
gets(file_num)
Tham số được truyền ở đây là mô tả tệp trả về bởi phương thức opend () . Phương thức này bắt đầu đọc từ đầu dòng của tệp. Các ký tự có giá trị từ 0 đến 255. Nguyên tử -1 được trả về ở cuối tệp.
Thí dụ
Hãy để chúng tôi lấy một tệp myfile.txt đã được tạo.
#!/home/euphoria-4.0b2/bin/eui
integer file_num
object line
constant ERROR = 2
constant STDOUT = 1
file_num = open("myfile.txt", "r")
if file_num = -1 then
puts(ERROR, "couldn't open myfile\n")
else
puts(STDOUT, "File opend successfully\n")
end if
line = gets(file_num)
printf( STDOUT, "Read content : %s\n", {line})
if file_num = -1 then
puts(ERROR, "No need to close the file\n")
else
close( file_num )
puts(STDOUT, "File closed successfully\n")
end if
Điều này tạo ra kết quả sau:
File opend successfully
Read content : My name is Zara and age is 8
File closed successfully
Euphoria cung cấp danh sách nhiều phương pháp giúp bạn thao tác với tệp. Các phương pháp này được liệt kê trong Quy trình Thư viện Euphoria .