Java FileDescriptor クラス
java.io.FileDescriptor クラスは、基礎となるオペレーティング システムで開いているファイルまたはソケット ハンドルを表します。これは、特定のファイル デバイスまたはソケットへの不透明な参照として機能します。このクラスは主に、Java I/O ストリームとネイティブ ファイル システム リソース間のブリッジとして使用されます。
クラス宣言
Java public final class FileDescriptor extends Object
- ファイル記述子の主な実際的な用途は、ファイル記述子を含めるための FileInputStream または FileOutputStream を作成することです。
- アプリケーションは独自のファイル記述子を作成しないでください。
一般的な FileDescriptor オブジェクト
- ファイル記述子.in: 標準入力(キーボード)を表します。
- ファイル記述子.out: 標準出力(コンソール)を表します。
- ファイル記述子.err: 標準誤差(エラー出力)を表します。
コンストラクタ
- ファイル記述子(): どのファイルにもソケットにも接続されていない無効なファイル記述子を作成します。
メソッド
主に以下の 2 つの方法があります。
- void sync(): すべてのシステム バッファーを基礎となるデバイスと強制的に同期させ、データが物理的に書き込まれることを保証します。
- java.io.File.valid(): ファイル記述子オブジェクトが有効かどうか (つまり、開いているファイルまたはソケットに接続されているかどうか) を確認します。
方法の例
1.sync()メソッド
構文:
パブリック 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()
戻る: FileDescriptor オブジェクトが有効な場合は true、それ以外の場合は 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.
標準の FileDescriptor を使用した例
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 (); } }
出力:
クイズの作成何かを入力してください: A
入力した内容: A