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 (); } }
Изход:
Създаване на тестВъведете нещо: А
Вие въведохте: А