Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:如何在二进制模式下使用File::RDONLY | File::CREAT等标志打开文件?_Ruby - Fatal编程技术网

Ruby:如何在二进制模式下使用File::RDONLY | File::CREAT等标志打开文件?

Ruby:如何在二进制模式下使用File::RDONLY | File::CREAT等标志打开文件?,ruby,Ruby,在File.open中,似乎有两个系统,一组使用“r”、“w”、“wb”,另一组使用“RDONLY”、“RDWR”。对于第二组,我还没有找到“b”的标志。谢谢你的帮助 “文件::二进制” 未初始化常量文件::二进制(NameError)这些标志称为模式标志。二进制的模式标志是二进制 请参阅中列出的文件::二进制文件 编辑:在我的系统上,它可以工作: $ ruby -e "puts File::BINARY" 0 (它没什么作用,但它就在那里)。请注意: 如果底层平台没有定义常量,那么相应的Ru

在File.open中,似乎有两个系统,一组使用“r”、“w”、“wb”,另一组使用“RDONLY”、“RDWR”。对于第二组,我还没有找到“b”的标志。谢谢你的帮助

“文件::二进制”


未初始化常量文件::二进制(NameError)

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


请参阅中列出的文件::二进制文件

编辑:在我的系统上,它可以工作:

$ ruby -e "puts File::BINARY"
0
(它没什么作用,但它就在那里)。请注意:

如果底层平台没有定义常量,那么相应的Ruby常量就没有定义


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

在任何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

我没有二进制文件(OSX 10.6.8)。

谢谢您的帮助。是“File::BINARY”还是“BINARY”?请检查我的新编辑。谢谢。您使用的是什么版本的Ruby?试试
::File::BINARY