📜  Java中的 FileInputStream skip() 方法及示例

📅  最后修改于: 2022-05-13 01:54:22.672000             🧑  作者: Mango

Java中的 FileInputStream skip() 方法及示例

FileInputStream类对于以字节序列的形式从文件中读取数据非常有帮助。 FileInputStream 用于读取原始字节流,例如图像、音频、视频等。对于读取字符流,推荐使用FileReader 。它最初是在 JDK 1.0 中引入的。

FileInputStream skip() 方法

FileInputStream 中的 skip(n) 方法非常有用,因为它丢弃了输入流开头的 n 字节数据。我们可以通过考虑以下示例来理解它的工作原理,

我们正在通过 FileInputStream 读取一个字符流,我们希望在跳过流中的前八个字符后读取它。让字符串为“ GeeksforGeeks ”,因此跳过前八个字符后,我们的字符串将变为“ Geeks ”。

skip() 方法对于完成上述任务很有用。此方法在Java.io包的 FileInputStream 类中定义。

Java I/O 包帮助用户执行所有输入输出操作。这些流支持所有对象、数据类型、字符、文件等,以完全执行 I/O 操作。

句法:

Input_File_Stream.skip(n)
Input_File_Stream: The file input stream.

参数:

  • n - 一个非负整数。
  • 要从字符流中跳过的字节。

返回值:返回实际跳过的字节数。

异常: IOException - 如果 n 是负整数或发生 I/O 错误。

示例 1:

Java
// Java program to demonstrate the working
// of skip() method in FileInputStream
  
// Importing the class files
// defined under io Package
import java.io.FileInputStream;
import java.io.IOException;
  
// Public class
public class GeeksforGeeks {
  
    // Main method
    public static void main(String[] args)
        throws IOException
    {
  
        FileInputStream inputFileStream = null;
  
        // Variables to store the fifth character
        int integerValue = 0;
        char characterValue;
        try {
            // Create new file input stream
            inputFileStream = new FileInputStream(
                "C:\\Users\\harsh\\Desktop\\GFG\\inputFile.txt");
  
            // Skip 4 bytes from the beginning
            // in the file input stream
            inputFileStream.skip(4);
  
            // Read bytes from this stream
            // (first character only)
            integerValue = inputFileStream.read();
  
            // Converting integer to character type
            characterValue = (char)i;
  
            // Print the character
            System.out.print("Character read: "
                             + characterValue);
        }
        catch (Exception exception) {
  
            // If any error occurs
            exception.printStackTrace();
        }
        finally {
  
            // Releasing all system resources
            if (inputFileStream != null)
                inputFileStream.close();
        }
    }
}
// This code is contributed by Bhuwanesh


Java
// Java program to demonstrate the working
// of skip() method in FileInputStream
  
// Importing the FileInputStream class
import java.io.FileInputStream;
// Importing the IOException class
import java.io.IOException;
  
// Public class
public class GeeksforGeeks {
  
    // Main method
    public static void main(String[] args)
        throws IOException
    {
  
        FileInputStream inputFileStream = null;
        int integerValue = 0;
        char characterValue;
        try {
            // Create new file input stream
            // Give the full path of the input file
            inputFileStream = new FileInputStream(
                "C:\\Users\\harsh\\Desktop\\GFG\\inputFile.txt");
  
            // Skip 8 bytes from the beginning in the file
            // input stream
            inputFileStream.skip(8);
  
            // Print on console
            System.out.print("String read: ");
  
            // Iterate till EOF is not reached
            while ((integerValue = inputFileStream.read())
                   != -1) {
  
                // converts integer to character
                characterValue = (char)i;
  
                // prints character
                System.out.print(characterValue);
            }
        }
        catch (Exception exception) {
  
            // If any error occurs
            exception.printStackTrace();
        }
        finally {
  
            // Releasing all system resources
            if (inputFileStream != null)
                inputFileStream.close();
        }
    }
}
// This code is contributed by Bhuwanesh


本地系统编译步骤:

1 、我们在本地保存了上述程序,名称为“ GeeksforGeeks ”:

源代码文件

2.现在让我们创建一个名为“ inputFile ”的文本文件:

文本文件

3.我们需要在创建的文本文件中输入一些文本。例如,我们在文本文件中写了“ GeeksforGeeks ”。

文本文件数据

4.我们现在将使用命令提示符通过 javac 编译器编译我们的程序:

javac GeeksforGeeks.java

源代码文件的编译

5.如下图所示,生成了 GeeksforGeeks.class字节码文件。现在使用以下命令运行程序:

java GeeksforGeeks

输出:

输出

输出描述:因为我们已经将 4 作为参数传递给程序中的 skip()函数。正如我们在程序的输出中看到的,前四个字符(或字节)被跳过(' G '、' e '、' e '、' k ')。 GeekforGeeks 中的第五个字符是' s ',因此,' s ' 打印在控制台上。

示例 2:

Java

// Java program to demonstrate the working
// of skip() method in FileInputStream
  
// Importing the FileInputStream class
import java.io.FileInputStream;
// Importing the IOException class
import java.io.IOException;
  
// Public class
public class GeeksforGeeks {
  
    // Main method
    public static void main(String[] args)
        throws IOException
    {
  
        FileInputStream inputFileStream = null;
        int integerValue = 0;
        char characterValue;
        try {
            // Create new file input stream
            // Give the full path of the input file
            inputFileStream = new FileInputStream(
                "C:\\Users\\harsh\\Desktop\\GFG\\inputFile.txt");
  
            // Skip 8 bytes from the beginning in the file
            // input stream
            inputFileStream.skip(8);
  
            // Print on console
            System.out.print("String read: ");
  
            // Iterate till EOF is not reached
            while ((integerValue = inputFileStream.read())
                   != -1) {
  
                // converts integer to character
                characterValue = (char)i;
  
                // prints character
                System.out.print(characterValue);
            }
        }
        catch (Exception exception) {
  
            // If any error occurs
            exception.printStackTrace();
        }
        finally {
  
            // Releasing all system resources
            if (inputFileStream != null)
                inputFileStream.close();
        }
    }
}
// This code is contributed by Bhuwanesh

为了在本地系统中编译上述程序,我们可以按照我们在示例 1 中提到的相同步骤。编译后,我们可以运行程序,它会生成以下输出。

输出:

输出

输出描述:正如您在输出中看到的,前八个字符被跳过(' G '、' e '、' e '、' k '、' s '、' f '、' o '、' r ')。剩下的字符串是“ Geeks ”,所以它会打印在控制台上。