Kiedy używasz plików w Ruby, jaka jest różnica między trybami r+
i w+
? A co z trybem a+
?Różnica między trybami dostępu obiektu "Plik" (np. W +, r +)
Odpowiedz
Zobacz http://www.tutorialspoint.com/ruby/ruby_input_output.htm
Cytując:
r
tryb tylko do odczytu. Wskaźnik pliku znajduje się na początku pliku. To jest tryb domyślny.r +
Tryb odczytu i zapisu. Wskaźnik pliku znajdzie się na początku pliku.w
Tryb tylko do zapisu. Zastępuje plik, jeśli plik istnieje. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.w +
Tryb odczytu i zapisu. Zastępuje istniejący plik, jeśli plik istnieje. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.a
Tryb tylko do zapisu. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Oznacza to, że plik znajduje się w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.a +
Tryb odczytu i zapisu. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Plik zostanie otwarty w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.
(kopalnia empshasis.)
R + w + i + wszystko zrobić odczytu. w + obcina plik. a + dołącza. w + i a + oba tworzą plik, jeśli nie istnieje.)
Odpowiedź: Zarówno r +, jak i w + możemy czytać, zapisywać w pliku, ale r + nie obcina (nie usuwa) zawartości pliku, jak również nie utwórz nowy plik, jeśli taki plik nie kończy się, gdy w + zostanie skrócona zawartość pliku, a także utworzy nowy plik, jeśli taki plik nie istnieje.
tryby dostępu r+
, w+
i a+
otwiera plik w czytać i pisać tryb, ale z następującą różnicą:
r+
zaczyna się na początku pliku, ale nie stworzy nowy plik, jeśli nie robi” t istnieje.
w+
skraca istniejący plik do długości zerowej, jeśli plik istnieje, w przeciwnym razie tworzy nowy plik.
a+
rozpoczyna się na końcu pliku, jeśli plik istnieje, w przeciwnym razie tworzy nowy plik.
Dla własnej korzyści/dla celów referencyjnych:
|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
Dzięki, jesteś dla mnie potwierdzeniem, że istnieją pewne błędne przekonanie, że środki '' W + dołączy. – akostadinov
@ Jonathan Figland Proszę sprawdzić [to] (http://stackoverflow.com/questions/42757267/why-does-a-mode-in-ruby-and-python-append-mode-start-from-the-begin- of-file) – Ratatouille
@Ratatouille Pytanie to wydaje się być zamknięte. Komentarze wydają się rozwiązywać główne problemy. Czy problem został rozwiązany? –