分享Ruby操作二进制文件技巧
在Ruby语言中,利用字符串保存二进制文件已经是一个非常方便的步骤了。那么具体的操作方法优势怎样的呢?下面我们就一起来看看Ruby操作二进制文件相关技巧介绍。
可是在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方法,他们接受一定数量的字节作为参数 .
input = File.new ("myfile",'a+') output = File.new ("outfile",'a+') instr = input.sysread(10); puts instr bytes = output.syswrite ("This is a test.")
相关推荐
jiangtie 2020-08-15
kerson 2020-05-11
长安长夜Saint 2020-06-14
milidou 2020-01-11
paopao00 2020-01-09
Joymine 2020-01-06
疯仔嵌入式 2011-04-10
hehezhou 2012-02-10
wordmhg 2019-10-24
Hashxu 2012-04-21
大伟爱自由 2012-02-10
benico 2010-01-31
MySQLfred 2019-07-01
hanniuniu 2019-06-27
frank0 2010-03-30
Andyshrk 2018-08-23
一只菜鸡 2014-05-28
dalian 2010-03-15
Stephenzsky 2019-05-27