Próbuję utworzyć nowy plik i wydaje się, że rzeczy nie działają tak, jak się tego spodziewam. Oto, czego próbowałem:
File.new "out.txt"
File.open "out.txt"
File.new "out.txt","w"
File.open "out.txt","w"
Według wszystkiego, co przeczytałem w Internecie, wszystkie powinny działać, ale każdy z nich daje mi to:
ERRNO::ENOENT: No such file or directory - out.txt
Dzieje się to zarówno z IRB, jak i skryptu Ruby. czego mi brakuje?
Errno::EACCES
, ale nieENOENT
.Odpowiedzi:
Posługiwać się:
gdzie są twoje opcje:
r
- Tylko czytać. Plik musi istnieć.w
- Utwórz pusty plik do zapisu.a
- Dołącz do pliku Plik jest tworzony, jeśli nie istnieje.r+
- Otwórz plik do aktualizacji zarówno do odczytu, jak i do zapisu. Plik musi istnieć.w+
- Utwórz pusty plik do odczytu i zapisu.a+
- Otwórz plik do odczytu i dołączenia. Plik jest tworzony, jeśli nie istnieje.W twoim przypadku
'w'
jest lepsze.LUB możesz mieć:
źródło
outFile
powinien wyglądaćout_file
.Próbować
bez użycia
źródło
Spróbuj użyć
"w+"
jako trybu zapisu zamiast po prostu"w"
:źródło
w
), czy jednocześnie czytać i pisać (w+
).Jeśli pomoże to komukolwiek innemu, może się tak zdarzyć, gdy próbujesz utworzyć nowy plik w katalogu, który nie istnieje.
źródło
Katalog nie istnieje. Upewnij się, że istnieje, ponieważ
open
nie utworzy dla Ciebie tych książek.Sama wpadłem na to jakiś czas temu.
źródło
File.new
iFile.open
domyślnie odczytuje tryb ('r'
) jako mechanizm bezpieczeństwa, aby uniknąć ewentualnego nadpisania pliku. Musimy wyraźnie powiedzieć Ruby'emu, aby używał trybu zapisu ('w'
jest to najbardziej powszechny sposób), jeśli mamy zamiar wyprowadzać dane do pliku.Jeśli tekst do wyprowadzenia jest łańcuchem, zamiast pisać:
albo gorzej:
Użyj bardziej zwięzłego
write
:write
ma tryby wolno więc możemy użyć'w'
,'a'
,'r+'
jeśli to konieczne.open
z blokiem jest przydatne, jeśli musisz obliczyć wynik w pętli iteracyjnej i chcesz pozostawić plik otwarty, gdy to robisz.write
jest przydatne, jeśli zamierzasz wyprowadzić zawartość za jednym razem, a następnie zamknij plik.Więcej informacji można znaleźć w dokumentacji .
źródło
Jeśli celem jest tylko utworzenie pliku, najbardziej bezpośrednim sposobem jest:
źródło
Możesz użyć
File.write('name of file here', data)
źródło
Możesz także użyć stałych zamiast ciągów, aby określić żądany tryb. Korzyścią jest to, że jeśli popełnisz literówkę w stałej nazwie, Twój program zgłosi wyjątek w czasie wykonywania.
Stałe to
File::RDONLY
lubFile::WRONLY
lubFile::CREAT
. Możesz je również łączyć, jeśli chcesz.Pełny opis trybów otwierania plików na ruby-doc.org
źródło