Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java FileInputStream 類

在本教程中,我們將借助示例學(xué)習(xí)Java FileInputStream及其方法。

java.io包的FileInputStream類可用于從文件中讀取數(shù)據(jù)(以字節(jié)為單位)。

它繼承了InputStream抽象類。

Java FileInputStream是InputStream類的子類。

在學(xué)習(xí)之前FileInputStream,請(qǐng)確保已經(jīng)了解Java File(文件)。

創(chuàng)建一個(gè)FileInputStream

為了創(chuàng)建文件輸入流,我們必須首先導(dǎo)入java.io.FileInputStream包。導(dǎo)入包后,就可以使用Java創(chuàng)建文件輸入流。

1.使用文件路徑

FileInputStream input = new FileInputStream(stringPath);

在這里,我們創(chuàng)建了一個(gè)輸入流,該輸入流將鏈接到所指定的文件路徑。

2.使用文件的對(duì)象

FileInputStream input = new FileInputStream(File fileObject);

在這里,我們創(chuàng)建了一個(gè)輸入流,該輸入流將鏈接到由fileObject指定的文件。

FileInputStream的方法

FileInputStream類為InputStream類中出現(xiàn)的不同方法提供了實(shí)現(xiàn)。

read()方法

  • read() - 從文件中讀取一個(gè)字節(jié)

  • read(byte[] array) - 從文件中讀取字節(jié)并存儲(chǔ)在指定的數(shù)組中

  • read(byte[] array, int start, int length) - 從文件中讀取等于length的字節(jié)數(shù),并從位置start開始存儲(chǔ)在指定的數(shù)組中

假設(shè)我們有一個(gè)名為input.txt的文件,其中包含以下內(nèi)容。

This is a line of text inside the file.

讓我們嘗試使用FileInputStream讀取此文件。

import java.io.FileInputStream;

public class Main {

  public static void main(String args[]) {

     try {
        FileInputStream input = new FileInputStream("input.txt");

        System.out.println("文件中的數(shù)據(jù): ");

        //讀取第一個(gè)字節(jié)
        int i = input.read();

       while(i != -1) {
           System.out.print((char)i);

           //從文件中讀取下一個(gè)字節(jié)
           i = input.read();
        }
        input.close();
     }

     catch(Exception e) {
        e.getStackTrace();
     }
  }
}

輸出結(jié)果

文件中的數(shù)據(jù):
This is a line of text inside the file.

在上面的示例中,我們創(chuàng)建了一個(gè)名為input的文件輸入流。輸入流與input.txt文件鏈接。

FileInputStream input = new FileInputStream("input.txt");

為了從文件中讀取數(shù)據(jù),我們?cè)趙hile循環(huán)中使用了read()方法。

available()方法

要獲取可用字節(jié)數(shù),我們可以使用available()方法。例如,

import java.io.FileInputStream;

public class Main {

   public static void main(String args[]) {

      try {
        //假設(shè)input.txt文件包含以下文本
        //這是文件中的一行文本。
         FileInputStream input = new FileInputStream("input.txt");

         //返回可用字節(jié)數(shù)
         System.out.println("開始時(shí)可用的字節(jié)數(shù): " + input.available());

         //從文件中讀取3個(gè)字節(jié)
         input.read();
         input.read();
         input.read();

         //返回可用字節(jié)數(shù)
         System.out.println("結(jié)束時(shí)的可用字節(jié)數(shù): " + input.available());

         input.close();
      }

      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

輸出結(jié)果

開始時(shí)可用的字節(jié)數(shù): 39
結(jié)束時(shí)的可用字節(jié)數(shù): 36

在以上示例中,

  1. 我們首先使用available()方法檢查文件輸入流中的可用字節(jié)數(shù)。

  2. 然后,我們已經(jīng)使用read()方法3次從文件輸入流中讀取3個(gè)字節(jié)。

  3. 現(xiàn)在,在讀取字節(jié)之后,我們?cè)俅螜z查了可用字節(jié)。這次,可用字節(jié)減少了3。

skip()方法

要丟棄和跳過指定的字節(jié)數(shù),可以使用skip()方法。例如

import java.io.FileInputStream;

public class Main {

   public static void main(String args[]) {

      try {
        //假設(shè)input.txt文件包含以下文本
        //這是文件中的一行文本。
         FileInputStream input = new FileInputStream("input.txt");

         //跳過5個(gè)字節(jié)
         input.skip(5);
         System.out.println("輸入流跳過5個(gè)字節(jié):");

         //讀取第一個(gè)字節(jié)
         int i = input.read();
         while (i != -1) {
            System.out.print((char) i);

            //從文件中讀取下一個(gè)字節(jié)
            i = input.read();
         }

         // close() 方法
         input.close();
      }
      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

輸出結(jié)果

輸入流跳過5個(gè)字節(jié):
is a line of text inside the file.

在上面的示例中,我們使用了skip()方法從文件輸入流中跳過5個(gè)字節(jié)的數(shù)據(jù)。因此,不會(huì)從輸入流中讀取表示文本“ This”的字節(jié)。

close()方法

要關(guān)閉文件輸入流,可以使用close()方法。一旦close()方法被調(diào)用,我們就不能使用輸入流來讀取數(shù)據(jù)。

在以上所有示例中,我們都使用了close()方法來關(guān)閉文件輸入流。

FileInputStream的其他方法

方法內(nèi)容描述
finalize()確保close()方法被調(diào)用
getChannel()返回FileChannel與輸入流關(guān)聯(lián)的對(duì)象
getFD()返回與輸入流關(guān)聯(lián)的文件描述符
mark()標(biāo)記輸入流中已讀取數(shù)據(jù)的位置
reset()將控件返回到輸入流中設(shè)置了標(biāo)記的點(diǎn)
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清