日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

為什么動不動就說 io 流? 這個“流”是什么意思呢?

流這個詞,也常常出現(xiàn)在電競選手的領(lǐng)域。大家都說,哦,這個隊伍經(jīng)常上去賣人頭來取得局面優(yōu)勢的這種打法,叫獻(xiàn)祭流。

而到了 JAVA 環(huán)境中,流就是數(shù)據(jù)從輸入源讀到程序,以及從程序?qū)懭氲捷敵鲈吹倪^程。

數(shù)據(jù)就像水流一樣,來了又走了,但是又留下了什么。 留下什么就要看程序?qū)?shù)據(jù)進(jìn)行了什么樣的操作。

Java 這里呢,有不同的分類標(biāo)準(zhǔn)。

按照數(shù)據(jù)的流向,分為:

  • 輸入流: 數(shù)據(jù)流從數(shù)據(jù)源到程序;
  • 輸出流: 數(shù)據(jù)流從程序到目標(biāo)輸出。

按單位獲取數(shù)據(jù)的類型,分為:

  • 字節(jié)流 以字節(jié)為獲取單位
  • 字符流 以字符為獲取單位,命名規(guī)律是: XXXStream。

按處理對象不同,分為:

  • 節(jié)點流: 直接從源或者終點讀寫數(shù)據(jù),如 FileInputStream/FileOutputStream;
  • 處理流(包裝流): 對其他流的處理流,目的是為了讓節(jié)點流更好用,比如很多 Buffer-開頭的流。

IO 抽象類

Java.io 包幾乎包含了所有操作輸入、輸出需要的類。 Java 里提到 io 流,不得不說所有 IO 流類的抽象父類:

  • InputStream(字節(jié)輸入流)
  • OutputStream(字節(jié)輸出流)
  • Reader(字符輸入流)
  • Writer(字符輸出流)

就是四個爸爸,每次要用的時候,當(dāng)然用的越具體越好。

下圖來自菜鳥網(wǎng)站(Java)

Java 文件操作必知概念

 

每一個爸爸類后面跟的分支就是我們具體用的時候要調(diào)的類。

可以看到很多類都具有比較好的對稱性:

  • 字符流下面

一寫:Writer,一讀:Reader;

  • 字節(jié)流下面

一寫:OutputStream,一讀:InputStream。

包括每個下面的操作也是成對出現(xiàn)的:

如 BufferedReader——BufferedWriter、InputStreamReader——OutputStreamWriter。

常用方法

  1. .close()

非常重要,不然資源一打開,就會占內(nèi)存。尤其是打開大文件,或者打開了多個文件。我們從小白開始就要有內(nèi)存控制的意識。

  1. .read()
Java 文件操作必知概念

 

InputStream 類里面約定,read 返回的是 -1 到 255 范圍的 int。

  1. .write()

針對 File 的其他通用操作: 查看路徑(當(dāng)前的、絕對的),文件是否存在、文件是否隱藏(isHidden),是否為空等等。

上代碼

public class FirstDemo {
    public static void main(String[] args) {
        // 創(chuàng)建字節(jié)輸入流
        FileInputStream file = null;
        try {
            file = new FileInputStream("/Users/fang/CODE/F/src/com/ftech/TestFileIO/a.rtf");
            int temp = 0;
            StringBuilder sb = new StringBuilder();
            while((temp = file.read()) != -1) {
                System.out.println(temp);
                sb.Append((char)temp);
            }
            System.out.println(sb.toString());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (file!=null) {
                try {
                    file.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
復(fù)制代碼

還沒掌握怎么用蘋果自帶軟件創(chuàng)建 txt,所以跟著老師演練的時候就隨便生成了一個文本文件,保存格式為 rtf。 IDEA 非常強(qiáng)大地給我指出,在什么地方要用異常處理,下圖就是兩個 catch 在編譯時具體被提醒的位置。

Java 文件操作必知概念

 

而且非常逗的一點是,老師是 a.txt 文件里有 abc,所以很容易就讀完了,而且讀出來的數(shù)字還就是:abc 對應(yīng)的 ASCII值 97、98、99,然后最后一行讀不到了就是 -1。

但是我在讀的時候,一開始沒寫循環(huán),更改了文件里的內(nèi)容,讀出來還是一樣的:

Java 文件操作必知概念

 

一直讀不到 -1,但是我在用while + sb 以后,才發(fā)現(xiàn)原來文件前面莫名其妙地多了這么多字符:

Java 文件操作必知概念

 

我的文件里只有一個 a。 前面沒截到的地方還有 300 多行。 期待大佬的解謎。也許是 rtf 格式的特殊性吧 ~

分享到:
標(biāo)簽:Java
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定