Java는 Stream의 위치를 표시하기 위해 InputStream 클래스의 mark() 함수를 사용합니다.
InputStream 클래스는 Java IO 라이브러리의 핵심 클래스이며 바이트 스트림 데이터를 읽는 데 사용됩니다. 바이트 데이터를 읽는 많은 메소드를 제공하며, 매우 유용한 메소드 중 하나는 mark()입니다. mark() 메서드는 나중에 이 위치로 돌아와 데이터를 계속 읽을 수 있도록 스트림의 위치를 표시할 수 있습니다.
mark() 메소드는 다음과 같이 정의됩니다.
publicsynchronous void mark(int readLimit)
이중 readLimit 매개변수는 Reset() 메소드를 호출하기 전에 읽을 수 있는 최대 바이트 수를 지정합니다. 즉, 읽은 바이트 수가 readLimit 값을 초과하는 경우 재설정() 메서드를 호출하면 IOException이 발생합니다.
다음은 mark() 및 Reset() 메소드 사용 방법을 보여주는 샘플 프로그램입니다.
import java.io.*; public class InputStreamMarkExample { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("data.txt"); BufferedInputStream bis = new BufferedInputStream(fis); // 使用mark()方法在流中标记一个位置 bis.mark(1024); // 读取前10个字节的数据 byte[] buffer = new byte[10]; bis.read(buffer); String data = new String(buffer); System.out.println("前10个字节的数据:" + data); // 调用reset()方法回到mark标记的位置 bis.reset(); // 读取10到20个字节的数据 bis.skip(10); bis.read(buffer); data = new String(buffer); System.out.println("第10到20个字节的数据:" + data); // 关闭流 bis.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
위의 예에서는 먼저 FileInputStream을 생성하고 효율성을 높이기 위해 BufferedInputStream으로 장식합니다. 그런 다음 mark() 메서드를 사용하여 스트림의 위치를 표시한 다음 처음 10바이트의 데이터를 읽고 인쇄합니다. 그런 다음 Reset() 메소드를 호출하여 마크 마크 위치로 돌아간 후 10바이트를 건너뛰고 다시 10~20바이트의 데이터를 읽어서 출력합니다.
이 예제를 통해 mark() 및 Reset() 메서드의 사용법을 확인할 수 있습니다. 스트리밍 데이터를 읽을 때, 저장하고 특정 위치로 돌아가서 데이터를 다시 읽거나 처리할 수 있도록 도와줍니다. 그러나 Reset() 메소드를 호출하기 전에 mark() 메소드를 호출하여 마크 위치를 설정해야 하며, 설정된 readLimit 값은 Reset()을 호출하기 전에 바이트를 읽을 수 있을 만큼 충분히 커야 합니다. 방법 개수는 이 값을 초과할 수 없습니다. 그렇지 않으면 IOException이 발생합니다.
간단히 말하면 Java의 InputStream 클래스는 스트림의 위치를 표시하고 필요할 때 데이터를 계속 읽을 수 있도록 이 위치로 돌아가는 데 도움이 되는 mark() 및 Reset() 메서드를 제공합니다. 이는 특정 데이터 조각을 다시 읽거나 일부 특정 데이터 블록을 처리해야 하는 등 특정 시나리오에서 매우 유용합니다. 코드의 유연성과 효율성을 향상시키기 위해 실제 필요에 따라 이러한 방법을 합리적으로 사용할 수 있습니다.
위 내용은 Java는 Stream의 위치를 표시하기 위해 InputStream 클래스의 mark() 함수를 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!