新聞中心
在Ruby語言中,利用字符串保存二進制文件已經是一個非常方便的步驟了。那么具體的操作方法優(yōu)勢怎樣的呢?下面我們就一起來看看Ruby操作二進制文件相關技巧介紹。#t#

成都創(chuàng)新互聯(lián)網(wǎng)站建設由有經驗的網(wǎng)站設計師、開發(fā)人員和項目經理組成的專業(yè)建站團隊,負責網(wǎng)站視覺設計、用戶體驗優(yōu)化、交互設計和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都網(wǎng)站設計、成都做網(wǎng)站易于使用并且具有良好的響應性。
可是在windows下是例外,在他下面,Ruby操作二進制文件和文本文件的不同是,在二進制mode下,結束行不能被轉義為一個單獨的換行,而是被保存為一個回車換行對.
另外的不同是,在文本模式下 control-Z被作為文件的結束:
- # Create a file (in binary mode)
- File.open("myfile","wb")
{|f| f.syswrite("12345\0326789\r") }- # Above note the embedded
octal 032 (^Z)- # Read it as binary
- str = nil
- File.open("myfile","rb")
{|f| str = f.sysread(15) }- puts str.size# 11
- # Read it as text
- str = nil
- File.open("myfile","r")
{|f| str = f.sysread(15) }- puts str.size# 5
這邊注意,這些代碼都是在windows下才會打印出后面的結果,如果是在linux兩處都會打印出11.
再看下面的Ruby操作二進制文件代碼:
- # Input file contains a
single line: Line 1.- file = File.open("data")
- line = file.readline #
"Line 1.\n"- puts "#{line.size} characters."
# 8 characters- file.close
- file = File.open("data","rb")
- line = file.readline # "Line 1.\r\n"
- puts "#{line.size} characters."
# 9 characters
二進制模式的結尾是一個回車換行對.- file.close
binmode方法能夠轉換當前的流為二進制模式,這邊要注意的是,一旦切換過去,就不能切換回來了:
- file = File.open("data")
- file.binmode
- line = file.readline
# "Line 1.\r\n"- puts "#{line.size}
characters." # 9 characters- file.close
如果你想使用更底層的輸入輸出,那你可以選擇sysread和syswrite方法,他們接受一定數(shù)量的字節(jié)作為參數(shù) .
- input = File.new
("myfile",'a+')- output = File.new
("outfile",'a+')- instr = input.sysread(10);
- puts instr
- bytes = output.syswrite
("This is a test.")
如果文件指針已經到達文件的結尾時,sysread方法將會拋出一個異常.
這邊要注意 Array 的pack和string的unpack方法,對于Ruby操作二進制文件非常有用.
本文標題:分享Ruby操作二進制文件技巧
分享URL:http://m.fisionsoft.com.cn/article/cophjdi.html


咨詢
建站咨詢
