文件读写
二进制模式
- 复制文件
#!/usr/bin/ruby
#encoding:UTF-8
#!/usr/bin/ruby
#encoding:UTF-8
myOldFile=File.new("testrb.txt",'r',binmode:true)
myNewFile=File.new("testrbnew.txt",'w',binmode:true)
while charData=myOldFile.read(1)
myNewFile.write(charData)
print "."
end
myOldFile.close()
myNewFile.close()
- 异或加解密
#!/usr/bin/ruby
#encoding:UTF-8
#!/usr/bin/ruby
#encoding:UTF-8
myOldFile=File.new("testrb.txt",'r',binmode:true)
myNewFile=File.new("testrbnew.dat",'w',binmode:true)
passWd="The jQuery library exposes its methods and properties via two properties of the window object called jQuery and $. $ is simply an alias for jQuery and it's often employed because it's shorter and faster to write."
i=0
while charData=myOldFile.read(1)
myNewFile.write((charData.ord ^ passWd[i].ord).chr)
i+=1
i = i % passWd.length
print "#{i}."
end
myOldFile.close()
myNewFile.close()
puts ""
puts "-------------"
myDFile=File.new("testrbnew.txt",'w',binmode:true)
mySFile=File.new("testrbnew.dat",'r',binmode:true)
i=0
while charData=mySFile.read(1)
myDFile.write((charData.ord ^ passWd[i].ord).chr)
i+=1
i = i % passWd.length
print "#{i}."
end
myDFile.close()
mySFile.close()
压缩与解压缩
rubyzip是一个用于读取和写入zip文件的ruby库。
gem install rubyzip
或
gem 'rubyzip'
ZipInputStream是用于读取zip文件中的zip条目的基本类。可以直接创建ZipInputStream对象,将zip文件名传递给构造函数,但通常情况下,ZipInputStream将从ZipFile(可能使用ZipFileSystem接口)对象中获得,用于zip存档中的特定条目。
ZipInputStream继承了IOExtras::AbstractInputStream,以便提供一个类似IO的接口来读取单个zip条目。除了模拟IO对象的方法之外,它还包含用于迭代归档条目的方法get_next_entry。get_next_entry返回一个ZipEntry对象,该对象描述ZipInputStream当前正在读取的zip条目。
使用ZipOutputStream创建zip存档并使用ZipInputStream再次读取它的示例。

[maisipu@192 learn]$ cat ziptest/test/myZipFile
我的zip文件
[maisipu@192 learn]$
require 'rubygems'
require 'zip'
folder = `pwd`.chomp
inputFilenames = `ls -p | grep -v /`.split("\n")
zipFileName = File.join(folder, 'ziptest/test.zip')
Zip::File.open(zipFileName, create: true) do |zipFile|
inputFilenames.each do |fileName|
zipFile.add(fileName, File.join(folder, fileName))
end
zipFile.get_output_stream("myZipFile") { |f| f.puts "我的zip文件" }
end