Java - PushbackReader skip(long n) method



Description

The Java PushbackReader skip(long n) method skips characters. This method will block until some characters are available, an I/O error occurs, or the end of the stream is reached.

skip(long n) method −

  • Purpose − Skips over n characters of input.

  • Returns − The actual number of characters skipped (may be less than n if the stream ends).

  • Does not throw an error if n is greater than the number of available characters − it just skips as many as possible.

Declaration

Following is the declaration for java.io.PushbackReader.skip(long n) method.

public long skip(long n)

Parameters

n − The number of characters to skip.

Return Value

This method does not return a value.

Exception

    IllegalArgumentException − If n is negative.

    IOException − If an I/O error occurs.

Example - Usage of PushbackReader skip(long n) method

The following example shows the usage of PushbackReader skip(long n) method.

PushbackReaderDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;

public class PushbackReaderDemo {
   public static void main(String[] args) {
      String s = "Hello World";

      // create a new StringReader
      StringReader sr = new StringReader(s);

      // create a new PushBack reader based on our string reader
      PushbackReader pr = new PushbackReader(sr, 20);

      try {
         // read the first five chars
         for (int i = 0; i < 5; i++) {
            char c = (char) pr.read();
            System.out.print("" + c);

            // skip a character every time
            pr.skip(1);
         }

         // change line
         System.out.println();

         // close the stream
         pr.close();

      } catch (IOException ex) {
         ex.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result −

HloWr

Example - Skip 3 characters before reading

The following example shows the usage of PushbackReader skip(long n) method.

PushbackReaderDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;

public class PushbackReaderDemo {
   public static void main(String[] args) {
      try (PushbackReader reader = new PushbackReader(new StringReader("HelloWorld"))) {
         long skipped = reader.skip(3);
         System.out.println("Skipped characters: " + skipped);

         int ch = reader.read(); // Should read the 4th character
         System.out.println("Character after skip: " + (char) ch); // Output: 'l'
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Skipped characters: 3  
Character after skip: l

Explanation

  • Input string: "HelloWorld"

  • skip(3) skips 'H', 'e', 'l'

  • Next read() gets 'l' (the 4th character)

Example - Skip more characters than available

The following example shows the usage of PushbackReader skip(long n) method.

PushbackReaderDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;

public class PushbackReaderDemo {
   public static void main(String[] args) {
      try (PushbackReader reader = new PushbackReader(new StringReader("Hi"))) {
         long skipped = reader.skip(10);
         System.out.println("Attempted to skip 10, actually skipped: " + skipped);

         int ch = reader.read(); // Should return -1 (end of stream)
         System.out.println("Read after skip: " + ch); // Output: -1
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Attempted to skip 10, actually skipped: 2  
Read after skip: -1

Explanation

  • Input string: "Hi" (2 characters)

  • skip(10) attempts to skip more than available.

  • Actually skips 2, then hits end-of-stream.

java_io_pushbackreader.htm