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:
Criar questionárioDigite algo: A
Você digitou: A