При использовании файлов в 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