Клас java.io.FileDescriptor представляє відкритий файл або дескриптор сокета в базовій операційній системі. Він діє як непрозоре посилання на певний файловий пристрій або сокет. Цей клас в основному використовується як міст між потоками вводу-виводу Java та ресурсами рідної файлової системи.
двійкове дерево в java
Оголошення класу
Javapublic final class FileDescriptor extends Object
- Основним практичним використанням файлового дескриптора є створення FileInputStream або FileOutputStream для його вмісту.
- Програми не повинні створювати власні дескриптори файлів.
Загальні об’єкти FileDescriptor
- FileDescriptor.in: Представляє стандартний ввід (клавіатура)
- FileDescriptor.out: Представляє стандартний вихід (консоль)
- FileDescriptor.err: Представляє стандартну помилку (вихід помилки)
Конструктор
- FileDescriptor(): Створює недійсний дескриптор файлу, який не підключено до жодного файлу чи сокета.
методи
Нижче наведено два основних методи:
- void sync(): Примушує всі системні буфери синхронізуватися з основним пристроєм, забезпечуючи фізичний запис даних.
- java.io.File.valid(): Перевіряє, чи об’єкт файлового дескриптора дійсний (тобто підключений до відкритого файлу або сокета).
Приклад методу
1. Метод sync().
Синтаксис:
public void sync()
Повернення: недійсний
Виняток: SyncFailedException - Цей виняток виникає, якщо немає гарантії синхронізації буферів із пристроєм.
Javaimport 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().
Синтаксис:
основи селену
public boolean valid()
Повернення: true, якщо об'єкт FileDescriptor дійсний, else false
Javaimport 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.
Приклад зі стандартними файловими дескрипторами
Javaimport 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(); } }
Вихід:
Створіть вікторинуВведіть щось: А
Ви ввели: А