1. 程式人生 > 實用技巧 >解決專案node版本不支援,windows多版本的node切換

解決專案node版本不支援,windows多版本的node切換

什麼是IO

IO流

I:Input

O:Output

通過IO可以完成硬碟檔案的讀和寫。

IO流的分類

有多種分類方式:

  1. 按照流的方向:以記憶體作為參照物

    往記憶體中去,叫做輸入(Input),或者叫做寫(read)。

    往記憶體中出來,叫做輸出(Output),或者叫做寫(Write)

  2. 按照讀取資料方式:

    有的流是按照位元組的方式讀取資料,一次讀取1個位元組byte,等同於一次讀取8個二進位制位。

    這種流是萬能的,什麼型別的流都能讀取。包括:文字檔案,圖片,聲音檔案,檢視檔案,視訊檔案等…

    這種流稱為位元組流

    位元組流直接讀取的是8個二進位制位

    假設有檔案file1.txt,採用位元組流的讀取方式:

    a中國bc張三fe

    第一次讀:一個位元組,正好讀到‘a’(‘a’字元在Windows系統中佔1個位元組,java中佔2個位元組)

    第二次讀:一個位元組,正好讀到‘中’字元的一半。(‘中’字元在Windows系統中佔2個位元組,在Java中佔4個位元組)

    第三次讀:一個自己,正好讀到‘中’字元的另外一半。

    有的流是按照字元的方式讀取資料,一次讀取一個字元,這種流是為了方便讀取普通文字檔案而存在的,這種流不能讀取:圖片,聲音,視訊等檔案。只能讀取純文字檔案,連word檔案都無法讀取。word檔案不是普通檔案。

    這種流稱為字元流

    字元流可以一個字元一個字元讀取

    假設有檔案file1.txt,採用字元流的讀取方式:

    a中國bc張三fe

    第一次讀:一個位元組,正好讀到‘a’

    第二次讀:一個位元組,正好讀到‘中’字元。

    專門為普通文字提供的流

  3. Java中IO流已經寫好,只需要呼叫即可

    Java中所有的流都是在:Java.io.*下。

    Java中主要還是研究:

    怎麼new流物件。呼叫流物件的哪個方法是讀,那個方法是寫。

流的四大家族

四大首領(全抽象類abstract class)

java.io.InputStream 位元組輸入流

java.io.OutputStream 位元組輸出流

java.io.Reader 字元輸入流

java.io.Writer 字元輸出流

所有的流都實現了:java.io.Closeable介面,都是可關閉的,都有close()方法。

流畢竟只是一個管道,這個是記憶體和硬碟之間的通道,用完之後一定要關閉,不然會耗費很多資源。

所有的輸出流都實現了:java.io.Flushable介面,都是可重新整理的,flush()方法。

養成一個好習慣,輸出流在最終輸出以後,一定要記得flush()重新整理一下。這個重新整理表示將通道/管道當中剩餘為輸出的資料強行輸出完,重新整理的作用就是清空管道。全部寫入到檔案當中。

注意:如果沒有flush()可能會導致丟失資料

注意:在Java中只要類名以stream結尾的都是位元組流。以Reader/Writer結尾的都是字元流(比如InputStreamReader就是字元流,因為是Reader結尾)

需要掌握的16個流

檔案專屬:

java.io.FileInputStream

java.io.FileOutputStream

java.io.FileReader

java.io.FileWriter

轉換流:(將位元組流轉換成字元流)

java.io.InputStreamReader

java.io.OutputStreamWriter

緩衝流專屬:

java.io.BufferInputStream

java.io.BufferOutputStream

java.io.BufferReader

java.io.BufferWriter

資料流專屬:

java.io.DataInputStream

java.io.DataOutputStream

標準輸出流:

java.io.printWriter

java.io.printStream

物件流專屬:

java.io.ObjectInputStream

java.io.ObjectOutputStream