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 ()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 .