java randomaccessfile 파일 읽기 및 쓰기를 구현할 위치를 지정합니다.
RandomAccessFile은 랜덤 읽기 클래스에 속합니다. 파일 자체의 내용을 무작위로 작동 할 수 있으며 파일의 지정된 위치에서 컨텐츠를 읽고 쓸 수 있으며, 이는 많은 경우에 매우 편리합니다.
RandomAccessFile은 데이터 레코드를 보유하는 파일에 액세스하는 데 사용됩니다. Seek () 메소드를 사용하여 레코드에 액세스하고 읽고 쓸 수 있습니다. 이 레코드의 크기는 동일 할 필요가 없습니다. 그러나 그들의 크기와 위치는 알아야합니다. 그러나이 클래스는 작동 파일로 제한됩니다.
RandomAccessFile은 InputStream 및 OutputStream 클래스에 속하지 않습니다. 실제로 Datainput 및 DataOutput 인터페이스를 구현하는 것 외에도 (DatainputStream 및 DataOutputStream 도이 두 인터페이스도 구현)이 두 클래스와 관련이 없으며 InputStream 및 OutputStream 클래스에 이미 존재하는 기능조차 사용하지 않습니다. 완전히 독립적 인 클래스이며 모든 방법 (주로 그 자체에 속함)은 처음부터 작성됩니다. RandomAccessFile이 파일에서 앞뒤로 이동할 수 있기 때문에 동작은 다른 I/O 클래스와 다소 다르기 때문일 수 있습니다. 요컨대, 객체를 직접 상속하는 별도의 클래스입니다.
기본적으로 RandomAccessFile의 작동 방식은 DatainputStream 및 DataOutputStream을 결합하고 포지셔닝 용 GetFilePointer ()와 같은 자체 메소드를 추가하고 파일에서 이동하려면 Seek ()를 추가하고 파일 크기의 길이 ()를 결정하고 SkipBytes ()를 건너 뛰는 것입니다. 또한 생성자에는 파일을 읽기 전용 모드 ( "r") 또는 읽기 쓰기 모드 ( "rw") (C의 fopen ()과 정확히 동일)로 열는지 여부를 나타내는 매개 변수가 있습니다. 파일 작성 만 지원하지 않습니다.
RandomAccessFile만이 검색 검색 방법을 가지고 있으며이 방법은 파일에만 적용됩니다. BufferedInputStream에는 Mark () 메소드가 있습니다. 마크를 설정하는 데 사용할 수 있습니다 (내부 변수로 결과를 저장) 한 다음 reset ()을 호출 하여이 위치로 돌아갑니다. 그러나 그 기능은 너무 약하고 실용적이지 않습니다.
예제 코드 :
import java.io.ioexception; import java.io.randomaccessfile;/** * RandomAccessFile은 무작위 읽기 클래스에 속하며 파일 자체의 내용을 직접적이고 무작위로 작동 할 수 있습니다. 쓰다(); 읽다(); } public static void write write write write ()는 ioexception {// 파일에 읽기 시작 방식으로 파일에 액세스 할 수 있습니다. raf.writebytes ( "Hello World!"); raf.writeboolean (true); raf.writeint (30); raf.writedouble (3.56); raf.close (); } public static void read ()는 ioexception {randomaccessfile raf = new randomaccessfile ( "d : //test.txt", "r"); raf.seek (12); // 포인터의 위치 설정 부울 booleanvalue = raf.readboolean (); int intvalue = raf.readint (); double doublevalue = raf.readdouble (); raf.seek (0); // 파일의 시작 부분에 대한 포인터 위치를 바이 테스 [] bytes = new Byte [12]; for (int i = 0; i <bytes.length; i ++) bytes [i] = raf.readbyte (); // 한 번에 바이트를 읽고 bytes [i] stringvalue = new String (bytes)에 할당합니다. raf.skipbytes (1); // byte byte int intvalue2 = raf.readint (); raf.close (); System.out.println (booleanValue); System.out.println (intvalue); System.out.println (DoubleValue); System.out.println (StringValue); System.out.println (intvalue2); }}읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!