При использовании файлов в Ruby в чем разница между режимами r+
и w+
? Как насчет режима a+
?
Разница между режимами доступа объекта "Файл" (т.е. W +, r +)
Ответ 1
См. http://www.tutorialspoint.com/ruby/ruby_input_output.htm
Цитата:
г
Режим только для чтения. Указатель файла помещается в начале файла. Это режим "по умолчанию".г +
Режим чтения-записи. Указатель файла будет в начале файла.ш
Только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создается новый файл для записи.ш +
Режим чтения-записи. Перезаписывает существующий файл, если файл существует. Если файл не существует, создается новый файл для чтения и записи.а
Только для записи. Указатель файла находится в конце файла, если файл существует. То есть, файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи.а +
Режим чтения и записи. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи.
(empshasis mine.)
r +, w + и a + все do read-write. w + обрезает файл. a + добавляет. w + и a + оба создают файл, если он не существует.)
Ответ 2
Режимы доступа r+
, w+
и a+
открывает файл в режиме чтения и записи, но со следующей разницей:
r+
начинается с начала файла, но не будет создавать новый файл, если он не существует.
w+
обрезает существующий файл до нулевой длины, если файл существует, в противном случае создается новый файл.
a+
начинается в конце файла, если файл существует, в противном случае создается новый файл.
Ответ 3
Ответ: Как r +, так и w + мы можем читать, записывать в файл, но r + не обрезает (удаляет) содержимое файла, а также не создает новый файл, если такой файл не выходит, а в w + обрезает содержимое файла, а также создает новый файл, если такой файл не существует.
Ответ 4
Для моих собственных целей/для справочных целей:
|mode|reads|writes|starts writing at|if preexists
|r |yes | |n/a |ok
|r+ |yes |yes |beginning |fail
|w | |yes |beginning |overwrite
|w+ |yes |yes |beginning |overwrite
|a | |yes |end |append
|a+ |yes |yes |end |append