Classe Java FileDescriptor

A classe java.io.FileDescriptor representa um arquivo aberto ou identificador de soquete no sistema operacional subjacente. Ele atua como uma referência opaca a um dispositivo de arquivo ou soquete específico. Esta classe é usada principalmente como uma ponte entre os fluxos de E/S Java e os recursos nativos do sistema de arquivos.

Declaração de Classe

Java
   public     final     class   FileDescriptor     extends     Object   
  • O principal uso prático de um descritor de arquivo é criar um FileInputStream ou FileOutputStream para contê-lo.
  • Os aplicativos não devem criar seus próprios descritores de arquivo.

Objetos FileDescriptor comuns

  • ArquivoDescriptor.in: Representa a entrada padrão (teclado)
  • ArquivoDescriptor.out: Representa a saída padrão (console)
  • ArquivoDescriptor.err: Representa o erro padrão (saída de erro)

Construtor

  • Descritor de arquivo(): Cria um descritor de arquivo inválido que não está conectado a nenhum arquivo ou soquete.

Métodos

Existem dois métodos principais, conforme mencionado abaixo:

  • sincronização nula(): Força todos os buffers do sistema a sincronizarem com o dispositivo subjacente, garantindo que os dados sejam gravados fisicamente.
  • java.io.File.valid(): Verifica se o objeto descritor de arquivo é válido (ou seja, conectado a um arquivo aberto ou soquete).

Exemplo de método

1. Método sincronizado()

Sintaxe:

sincronização de vazio público()

Retornar : vazio

Exceção: SyncFailedException - Esta exceção é lançada se não houver garantia de sincronização de buffers com o dispositivo.

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

Saída
Is FileDescriptor valid? true Is FileDescriptor valid after close? false  

2. Método válido()

Sintaxe:

público booleano válido()

Retornar: verdadeiro se o objeto FileDescriptor for válido, caso contrário, falso

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

Saída
Data synchronized successfully.  

Exemplo com FileDescriptors padrão

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

Saída:

Digite algo: A

Você digitou: A

Criar questionário