Klasa FileDescriptor Java
Klasa java.io.FileDescriptor reprezentuje otwarty plik lub uchwyt gniazda w bazowym systemie operacyjnym. Działa jako nieprzezroczyste odniesienie do konkretnego urządzenia plikowego lub gniazda. Ta klasa jest używana głównie jako pomost między strumieniami we/wy Java a zasobami natywnego systemu plików.
Deklaracja klasy
Java public final class FileDescriptor extends Object
- Głównym praktycznym zastosowaniem deskryptora pliku jest utworzenie strumienia FileInputStream lub FileOutputStream, które będą go zawierać.
- Aplikacje nie powinny tworzyć własnych deskryptorów plików.
Typowe obiekty FileDescriptor
- FileDescriptor.in: Reprezentuje standardowe wejście (klawiatura)
- FileDescriptor.out: Reprezentuje standardowe wyjście (konsola)
- FileDescriptor.err: Reprezentuje błąd standardowy (wyjście błędu)
Konstruktor
- Deskryptor pliku(): Tworzy nieprawidłowy deskryptor pliku, który nie jest połączony z żadnym plikiem ani gniazdem.
Metody
Istnieją dwie główne metody wymienione poniżej:
- unieważniona synchronizacja(): Wymusza synchronizację wszystkich buforów systemowych z urządzeniem bazowym, zapewniając fizyczny zapis danych.
- java.io.File.valid(): Sprawdza, czy obiekt deskryptora pliku jest prawidłowy (tj. podłączony do otwartego pliku lub gniazda).
Przykład metody
1. Metoda sync().
Składnia:
publiczna synchronizacja nieważności()
Powrót : próżnia
Wyjątek: SyncFailedException — Wyjątek ten jest zgłaszany, jeśli nie ma gwarancji synchronizacji buforów z urządzeniem.
Java import java.io.* ; public class FileDescriptorValidity { public static void main ( String [] args ) throws Exception { FileOutputStream fos = new FileOutputStream ( 'example.txt' ); FileDescriptor fd = fos . getFD (); System . out . println ( 'Is FileDescriptor valid? ' + fd . valid ()); fos . close (); System . out . println ( 'Is FileDescriptor valid after close? ' + fd . valid ()); } }
Wyjście
Is FileDescriptor valid? true Is FileDescriptor valid after close? false
2. Metoda valid().
Składnia:
publiczna wartość logiczna valid()
Powrót: true, jeśli obiekt FileDescriptor jest prawidłowy, w przeciwnym razie false
Java import java.io.* ; public class FileDescriptorSync { public static void main ( String [] args ) throws Exception { FileOutputStream fos = new FileOutputStream ( 'syncDemo.txt' ); FileDescriptor fd = fos . getFD (); fos . write ( 'GeeksForGeeks FileDescriptor Example' . getBytes ()); fd . sync (); // Ensures data is written to disk System . out . println ( 'Data synchronized successfully.' ); fos . close (); } }
Wyjście
Data synchronized successfully.
Przykład ze standardowymi deskryptorami plików
Java import java.io.* ; public class StandardFileDescriptors { public static void main ( String [] args ) throws Exception { FileInputStream fis = new FileInputStream ( FileDescriptor . in ); FileOutputStream fos = new FileOutputStream ( FileDescriptor . out ); FileOutputStream fes = new FileOutputStream ( FileDescriptor . err ); fos . write ( 'Enter something: ' . getBytes ()); int data = fis . read (); fes . write (( 'You entered: ' + ( char ) data + 'n' ). getBytes ()); fis . close (); fos . close (); fes . close (); } }
Wyjście:
Utwórz quizWpisz coś: A
Wpisałeś: A