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:

Wpisz coś: A

Wpisałeś: A

Utwórz quiz