一、在講之前,我們先看個類,Scanner類,java.util.Scanner 是 Java5 的新特徵,我們可以通過 Scanner 類來獲取用戶的輸入,Scanner類提供了多個構造器,不同的構造器可以接受文件,輸入流,字符串作爲數據源,用於從文件,輸入流字符串中解析數據。
ps:代碼很簡單,輸入啥,輸出啥;
二、好了,我們先看看整個IO類結構;打鉤的表示以後會經常遇到,要重點學習;
三.流的概念和作用
流是一組有順序的,有起點和終點的字節集合,是對數據傳輸的總稱或抽象。即數據在兩設備間的傳輸稱爲流,流的本質是數據傳輸,根據數據傳輸特性將流抽象爲各種類,方便更直觀的進行數據操作。舉個栗子:
農村的娃,小時候都玩過泥沙吧,用竹筒把沙子從高出排到低處,那時候叫模擬沙漠來着,整個沙子就好比流,裏面的每粒沙子就好比我們要傳輸的數據。理解起來不難;
再比如,農村的夥伴都知道,山泉水從山上滲透到水井,然後又從水井通過水管把水送到各家各戶。從山上到水井之間的水流我們可以稱之爲輸入流,從水井到各家各戶的水流我們稱之爲輸出流,我們大概可以這麼理解。
四.字節流和字符流
字節流:InputStream和OutputStream是java中可以按照最小字節單位讀取的流,即每次讀寫一個字節,字節流是直接連接到輸入源的流。
字符流:是以字符爲單位進行數據處理的IO流。本質其實就是基於字節流讀取時,去查找指定的碼錶。
字節流與字符流之間的區別:
1.讀寫單位不同:字節流式以字節(8位2進制)爲單位,字符流是以字符爲單位,根據碼錶映射字符,一次可能讀多個字節。
2.處理對象不同:字節流能處理所有類型的數據(如圖片、avi等),而字符流只能處理字符類型的數據。
3.一次讀入或讀出是8位二進制。
4.字符流:一次讀入或讀出是16位二進制。
結論:只要是純文本數據優先使用字符流,除此之外都使用字節流。
五.輸入流字節流InputStream與輸出字節流InputStream
1.InputStream是一個抽象類,是所有輸入字節流的父類。
2.ByteArrayInputStream、StringBufferInputStream、FileInputStream是三中基本的字節了,他們分別從數組、StringBuffer、和本地文件中讀取數據。
3.OutputStream
是所有的輸出字節流的父類,它是一個抽象類。
4.ByteArrayOutputStream
、FileOutputStream
是兩種基本的介質流,它們分別向Byte 數組
、和本地文件
中寫入數據。
常用的節點流
1.文 件 :FileInputStream
、 FileOutputStrean
、FileReader
、FileWriter
文件進行處理的節點流
2.數 組 :ByteArrayInputStream
、 ByteArrayOutputStream
、 CharArrayReader
、CharArrayWriter
對數組進行處理的節點流(對應的不再是文件,而是內存中的一個數組)
3.字符串 :StringReader
、 StringWriter
對字符串進行處理的節點流
常用的處理流
1.緩衝流:BufferedInputStrean
、BufferedOutputStream
、 BufferedReader
、 BufferedWriter
增加緩衝功能,避免頻繁讀寫硬盤。
2.轉換流:InputStreamReader
、OutputStreamReader
實現字節流和字符流之間的轉換。
3.數據流: DataInputStream
、DataOutputStream
等-提供將基礎數據類型寫入到文件中,或者讀取出來。
五、概念需要理解下,這裏重點介紹2個操作,一個是從電腦裏面讀文件信息,並打印出來,一個是從一個文件裏讀取到信息,並輸出到另一個文件裏面去;先看下代碼:
ps:代碼一開始new了2個file文件對象, 並且傳了2個文件路徑,你們在自己敲代碼的時候,切勿直接複製,這2個目錄是我本地電腦的文件目錄,你們自己在電腦新建2個文件,然後把目錄放進去就好了;
其他的內容暫時先理解,後續推出的Android課程系統會重點講;
ps:還有技術疑問的歡迎加入:
歡迎加入途碼技術學習交流二羣,羣聊號碼:322394766
微信公衆號: