Ruby:如何使用File :: READ ONLY | File :: CREATE等二进制模式打开文件?

时间:2014-09-10 00:45:28

标签: ruby

在File.open中,似乎有两个系统,一个使用" r"," w"," wb",另一个使用& #34; RDONLY"," RDWR"。对于第二盘,我还没有找到#34; b"的旗帜。谢谢你的帮助。

"文件:: BINARY"

未初始化的常量File :: BINARY(NameError)

3 个答案:

答案 0 :(得分:0)

这些标志称为mode标志。二进制的模式标志是BINARY

请参阅http://www.ruby-doc.org/core-2.1.2/File/Constants.html

答案 1 :(得分:0)

{p> File::BINARY,列于File constants

编辑:在我的系统上,它有效:

$ ruby -e "puts File::BINARY"
0

(它没有做太多,但它在那里)。请注意:

  

如果底层平台没有定义常量,则不定义相应的Ruby常量。

所以你可能会受到操作系统的干扰?或许你拼错了?

答案 2 :(得分:0)

在任何ruby程序中试试这个:

p File::RDONLY
p File::CREAT
p File::BINARY

我明白了:

--output:--
0
512
1.rb:3: uninitialized constant File::BINARY (NameError)

或者,要查看File :: Constants在您的系统上实际定义的常量,您可以这样做:

File::Constants.constants.sort.each do |const|
  puts "#{const} = #{File::Constants.const_get(const)}"
end

我明白了:

APPEND = 8
CREAT = 512
EXCL = 2048
FNM_CASEFOLD = 8
FNM_DOTMATCH = 4
FNM_NOESCAPE = 1
FNM_PATHNAME = 2
FNM_SYSCASE = 0
LOCK_EX = 2
LOCK_NB = 4
LOCK_SH = 1
LOCK_UN = 8
NOCTTY = 131072
NONBLOCK = 4
RDONLY = 0
RDWR = 2
SYNC = 128
TRUNC = 1024
WRONLY = 1

对我来说没有BINARY(OSX 10.6.8)。