Třída Java FileDescriptor
Třída java.io.FileDescriptor představuje otevřený soubor nebo úchyt soketu v základním operačním systému. Funguje jako neprůhledný odkaz na konkrétní souborové zařízení nebo soket. Tato třída se používá hlavně jako most mezi I/O proudy Java a prostředky nativního systému souborů.
Třídní prohlášení
Java public final class FileDescriptor extends Object
- Hlavním praktickým využitím deskriptoru souboru je vytvoření FileInputStream nebo FileOutputStream, který jej obsahuje.
- Aplikace by neměly vytvářet vlastní deskriptory souborů.
Běžné objekty FileDescriptor
- FileDescriptor.in: Představuje standardní vstup (klávesnice)
- FileDescriptor.out: Představuje standardní výstup (konzole)
- FileDescriptor.err: Představuje standardní chybu (chybový výstup)
Konstruktér
- FileDescriptor(): Vytvoří neplatný deskriptor souboru, který není připojen k žádnému souboru nebo soketu.
Metody
Existují dva hlavní způsoby, jak je uvedeno níže:
- void sync(): Vynutí synchronizaci všech vyrovnávacích pamětí systému se základním zařízením a zajistí, že data budou fyzicky zapsána.
- java.io.File.valid(): Zkontroluje, zda je objekt deskriptoru souboru platný (tj. připojen k otevřenému souboru nebo soketu).
Příklad metody
1. Metoda sync().
Syntax:
public void sync()
Návrat: prázdnota
Výjimka: SyncFailedException - Tato výjimka je vyvolána, pokud není zaručena synchronizace vyrovnávacích pamětí se zařízením.
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 ()); } }
Výstup
Is FileDescriptor valid? true Is FileDescriptor valid after close? false
2. metoda valid()
Syntax:
public boolean valid()
Návrat: true, pokud je objekt FileDescriptor platný, jinak 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 (); } }
Výstup
Data synchronized successfully.
Příklad se standardními popisovači souborů
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 (); } }
výstup:
Vytvořit kvízZadejte něco: A
Zadali jste: A