open
open(...)
public
File open permissions
Usage: File.open path, flags, [permissions]
Flags (bitmasks)
Access:
File::RDONLY |
Read-only |
File::WRONLY |
Write-only |
File::RDWR |
Read and write |
If the file exists:
File::TRUNC |
Truncate |
File::APPEND |
Append |
File::EXCL |
Fail |
If the file doesn’t exist:
File::CREAT |
Flags (strings)
r |
File::RDONLY |
r+ |
File::RDWR |
w |
File::WRONLY|File::TRUNC|File::CREAT |
a |
File::WRONLY|File::APPEND|File::CREAT |
Examples
File.open path, File::RDONLY File.open path, 'w' File.open path, File::WRONLY|File::TRUNC|File::CREAT File.open path, File::WRONLY|File::TRUNC|File::CREAT, '0666'
Binary files
Another real important flag is b when dealing with binary files. For example to download an mp3 from the internet you need to pass the b flag or the data will be screwed up:
# Downloads a binary file from the internet require 'open-uri' url = "http://fubar/song.mp3" open(url, 'rb') do |mp3| File.open("local.mp3", 'wb') do |file| file.write(mp3.read) end end
Don’t say you haven’t been warned. :)
Errors Raised
Non IO errors (IOError) are contained in the Errno module. They are the same as those given in open(2), see:
http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html#ERRORS
Common Errors
-
Errno::ENOENT: No such file or directory
-
Errno::EACCES: Permission denied
-
Errno::EEXIST: File exists (i.e. IO::EXCL | IO::CREAT)