Java 파일 설명자 클래스
java.io.FileDescriptor 클래스는 기본 운영 체제의 열린 파일 또는 소켓 핸들을 나타냅니다. 이는 특정 파일 장치나 소켓에 대한 불투명한 참조 역할을 합니다. 이 클래스는 주로 Java I/O 스트림과 기본 파일 시스템 리소스 간의 브리지로 사용됩니다.
클래스 선언
Java public final class FileDescriptor extends Object
- 파일 설명자의 주요 실제 용도는 이를 포함하는 FileInputStream 또는 FileOutputStream을 생성하는 것입니다.
- 애플리케이션은 자체 파일 설명자를 생성해서는 안 됩니다.
공통 FileDescriptor 객체
- 파일 설명자.in: 표준 입력(키보드)을 나타냅니다.
- 파일 설명자.out: 표준 출력(콘솔)을 나타냅니다.
- 파일 설명자.err: 표준 오류(오류 출력)를 나타냅니다.
건설자
- 파일설명자(): 파일이나 소켓에 연결되지 않은 잘못된 파일 설명자를 만듭니다.
행동 양식
아래와 같이 두 가지 주요 방법이 있습니다.
- 무효 동기화(): 데이터가 물리적으로 기록되도록 모든 시스템 버퍼를 기본 장치와 강제로 동기화합니다.
- java.io.파일.유효(): 파일 설명자 개체가 유효한지(즉, 열린 파일이나 소켓에 연결되어 있는지) 확인합니다.
방법 예
1. 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() 메소드
통사론:
공개 부울 유효()
반품: 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.
표준 파일 설명자의 예
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