Java FileDescriptor клас

Класът java.io.FileDescriptor представлява отворен файл или манипулатор на сокет в основната операционна система. Той действа като непрозрачна препратка към конкретно файлово устройство или сокет. Този клас се използва главно като мост между Java I/O потоци и собствените ресурси на файловата система.

Декларация на класа

Java
   public     final     class   FileDescriptor     extends     Object   
  • Основната практическа употреба на файлов дескриптор е да се създаде FileInputStream или FileOutputStream, който да го съдържа.
  • Приложенията не трябва да създават свои собствени файлови дескриптори.

Общи обекти на FileDescriptor

  • FileDescriptor.in: Представлява стандартния вход (клавиатура)
  • FileDescriptor.out: Представлява стандартния изход (конзола)
  • FileDescriptor.err: Представлява стандартната грешка (изход за грешка)

Конструктор

  • Създава невалиден файлов дескриптор, който не е свързан с никакъв файл или сокет.

Методи

Има два основни метода, както е споменато по-долу:

  • void sync(): Принуждава всички системни буфери да се синхронизират с основното устройство, като гарантира, че данните се записват физически.
  • java.io.File.valid(): Проверява дали обектът на файловия дескриптор е валиден (т.е. свързан към отворен файл или сокет).

Пример за метод

1. sync() Метод

Синтаксис:

public void sync()

Връщане: невалиден

Изключение: SyncFailedException - Това изключение се хвърля, ако няма гаранция за синхронизиране на буферите с устройството.

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  ());      }   }   

Изход
Is FileDescriptor valid? true Is FileDescriptor valid after close? false  

2. valid() метод

Синтаксис:

публичен булев valid()

Връщане: true, ако обектът FileDescriptor е валиден else 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  ();      }   }   

Изход
Data synchronized successfully.  

Пример със стандартни файлови дескриптори

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  ();      }   }   

Изход:

Въведете нещо: А

Вие въведохте: А

Създаване на тест