Używam FileWriter do zapisu w pliku i zauważyłem, że nawet po usunięciu pliku (poza procesem) FileWriter nie rzuca żadnego wyjątku.Pisanie Java do usuniętego pliku
Czy to normalne?
Używam FileWriter do zapisu w pliku i zauważyłem, że nawet po usunięciu pliku (poza procesem) FileWriter nie rzuca żadnego wyjątku.Pisanie Java do usuniętego pliku
Czy to normalne?
To zależy od używanego systemu operacyjnego:
Tak, to normalne. Korzystając z większości konwencjonalnych sposobów wykonywania operacji we/wy, jeśli plik nie istnieje, tworzy go za Ciebie. To oczywiście w oczekiwaniu na usunięcie go przed zacząłeś pisać do niego.
Plik może być wyświetlany w więcej niż jednym miejscu (z twardymi linkami) Usunięcie pliku powoduje usunięcie jednego z twardych linków (prawdopodobnie jedynego) Jeśli istnieje łącze w innym miejscu, plik jest nadal dostępny.
Pliki, które są usuwane, ale otwarte, zajmują więcej miejsca na dysku, a jeśli są wystarczająco duże, mogą oznaczać, że używane jest miejsce, a rozmiar wszystkich plików znajdujących się na dysku jest inny.
BTW: można odczytywać/zapisywać zawartość otwartego pliku (usunięte lub nie), jeśli spojrzeć w /proc/{pid}/fd/{fid}
Jaki system operacyjny jest na to? Na przykład, w Linuksie zrobienie 'rm' powoduje tylko odłączenie pliku od ścieżki i dopiero wtedy, gdy znikną wszystkie uchwyty do pliku, zostanie ono faktycznie usunięte (może ono zostać odzyskane, jeśli jest nadal otwarte). –