Jeśli spojrzysz na Java API, będziesz w stanie natychmiast uzyskać odpowiedź.
gigadot
43
Dowiedziałem się, że ludzie są bardziej pomocni niż znakomita specyfikacja Java.
Albus Dumbledore,
6
b / c nie można go otworzyć :)
bestsss
6
Ponieważ niczego nie otwiera. A ludzie są znacznie mniej wiarygodni niż oficjalna specyfikacja Javy.
Markiz Lorne
Odpowiedzi:
141
Javadoc Fileklasy opisuje klasę jako:
Abstrakcyjna reprezentacja nazw ścieżek do plików i katalogów.
Filejest tylko reprezentacją nazwy ścieżki, z kilkoma metodami dotyczącymi systemu plików (jak exists()) i obsługi katalogów, ale rzeczywiste wejście i wyjście strumieniowe odbywa się gdzie indziej. Strumienie można otwierać i zamykać, pliki nie.
(Osobiście uważam, że to raczej niefortunne, że Sun następnie zaczął tworzyć RandomAccessFile, powodując wiele zamieszania z powodu niespójnego nazewnictwa).
Ale co z wszystkimi metodami tworzenia list katalogów? Powinni byli zostać Pathcałkowicie odseparowani .
biziclop
3
Zgoda, ale w każdym przypadku nazwa File lub RandomAccessFile jest błędna. Coś w rodzaju RandomAccessFileStream mogłoby być lepsze, ale teraz jest już wiele lat za późno.
maaartinus
7
„Właściwie ta klasa została źle nazwana przez autorów biblioteki, powinna nazywać się czymś w rodzaju Path” -> Oni cię słyszeli. W pakiecie nio (New I / O) podobna klasa nosi teraz nazwę Path. docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html
min
6
Zasadniczo plik o dostępie swobodnym opakowuje strumienie wejściowe i wyjściowe w celu zarządzania dostępem swobodnym. Nie otwierasz i nie zamykasz pliku, otwierasz i zamykasz strumienie do pliku.
Tak. Nigdy nie zaglądałem zbytnio do java.io.RandomAccessFile. Zawsze zakładałem, że zastępuje java.io.File, ale tak nie jest !. Plik reprezentuje ścieżkę. RandomAccessFile to obiekt, który może wykonywać operacje we / wy dysku tak jak strumienie, aczkolwiek z dużo inną implementacją, aby umożliwić dostęp losowy zamiast strumieniowego.
Steve Cohen,
6
BufferedReader można otwierać i zamykać, ale plik nigdy nie jest otwierany, po prostu reprezentuje ścieżkę w systemie plików.
Odpowiedzi:
Javadoc
File
klasy opisuje klasę jako:File
jest tylko reprezentacją nazwy ścieżki, z kilkoma metodami dotyczącymi systemu plików (jakexists()
) i obsługi katalogów, ale rzeczywiste wejście i wyjście strumieniowe odbywa się gdzie indziej. Strumienie można otwierać i zamykać, pliki nie.(Osobiście uważam, że to raczej niefortunne, że Sun następnie zaczął tworzyć
RandomAccessFile
, powodując wiele zamieszania z powodu niespójnego nazewnictwa).źródło
java.io.File
nie reprezentuje otwartego pliku, reprezentuje ścieżkę w systemie plików. Dlatego posiadanieclose
metody nie ma sensu.Właściwie ta klasa została źle nazwana przez autorów biblioteki, powinna nazywać się czymś w rodzaju
Path
.źródło
Path
całkowicie odseparowani .Zasadniczo plik o dostępie swobodnym opakowuje strumienie wejściowe i wyjściowe w celu zarządzania dostępem swobodnym. Nie otwierasz i nie zamykasz pliku, otwierasz i zamykasz strumienie do pliku.
źródło
BufferedReader można otwierać i zamykać, ale plik nigdy nie jest otwierany, po prostu reprezentuje ścieżkę w systemie plików.
źródło
Załóżmy, że masz
Nie musisz zamykać
File
litery s, ponieważ jest to tylko reprezentacja ścieżki.Zawsze powinieneś rozważyć zamknięcie tylko czytelników / autorów i faktycznie strumieni.
źródło