> Java > java지도 시간 > 본문

Java는 Stream의 위치를 ​​표시하기 위해 InputStream 클래스의 mark() 함수를 사용합니다.

WBOY
풀어 주다: 2023-07-24 12:46:45
원래의
1150명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!