Интерфейс InputStream
предназначен для чтения байтов из потока. Метод skipNBytes()
, появившийся в Java 12, позволяет пропустить n байтов и продолжить чтение дальше.
Допустим, вы читаете через InputStream содержимое текстового файла:
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; public class SkipNBytes { public static void main(String[] args) throws IOException { InputStream is = ClassLoader.getSystemClassLoader().getResource("hello.txt").openStream(); ByteArrayOutputStream result = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length; while ((length = is.read(buffer)) != -1) { result.write(buffer, 0, length); } String fileContent = result.toString(StandardCharsets.UTF_8.name()); System.out.println(fileContent); is.close(); } }
Hello Java World!
Вызывая последовательно один из перегруженных методов read()
, мы можем прочитать всё содержимое файла, начиная с первого байта.
Если же перед началом чтения из файла вызвать метод skipNBytes()
, мы начнём чтение из файла, минуя первые n байтов:
InputStream is = ... is.skipNBytes(6);
Если вам нужно пропустить известное количество первых N байт из InputStream, смело используйте метод skipNBytes()
.
skipNBytes() – пропуск N байтов при чтении из InputStream