Клас Java FileDescriptor
Клас java.io.FileDescriptor представляє відкритий файл або дескриптор сокета в базовій операційній системі. Він діє як непрозоре посилання на певний файловий пристрій або сокет. Цей клас в основному використовується як міст між потоками вводу-виводу Java та ресурсами рідної файлової системи.
Оголошення класу
Java public 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 - Цей виняток виникає, якщо немає гарантії синхронізації буферів із пристроєм.
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().
Синтаксис:
public boolean 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 (); } }
Вихід:
Створіть вікторинуВведіть щось: А
Ви ввели: А