Подтвердить что ты не робот

Разница между режимами доступа объекта "Файл" (т.е. W +, r +)

При использовании файлов в Ruby в чем разница между режимами r+ и w+? Как насчет режима a+?

4b9b3361

Ответ 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