大數據學習路線分享IO流學習筆記-IO流(input/output):java
做用:實現兩個設備之間數據的傳遞linux
設備:磁盤(硬盤),內存,鍵盤,文件,網絡,控制檯windows
網絡:當前主機以外的網上資源數組
分類:網絡
根據操做的方式:輸入流和輸出流 ---因**內存**爲參考學習
根據數據的類型:字節流和字符流大數據
字節流:編碼
字節輸入流:InputStreamspa
字節輸出流:OutputStreamunix
字符流的兩個父類:
字符讀入流(將數據輸入內存):Reader
字符寫出流(將數據從內存取出):Writer
實例:研究字符流
以磁盤的數據存儲爲例,將數據寫入文件
分析:由於操做的是文本,因此使用字符流
* 寫入文件-----寫出流------FileWriter
* 讀文件------讀入流-------FileReader
代碼:
FileWriter fileWriter = new FileWriter("test1.txt");
//注意點:
//一:若是隻寫文件的名字,不寫具體路徑,默認路徑是當前的工程
//二:對於關聯的文件,若是以前不存在,程序會自動建立一個,若是存在,會將原來的內容覆蓋
//三:能夠本身指定路徑,可是必須保證路徑是真實存在的,不然報異常---FileNotFountException(系統找不到指定的路徑。)
fileWriter.write("chenchen");
//四:在執行write方法時,數據被臨時放到了流對象的內部數組中,這個數組是一個字節數組,會默認去查編碼表
//fileWriter.flush();
//刷新---將臨時數組中的數據放入磁盤
fileWriter.close();
//關閉流--兩個功能:a:關閉流 b:刷新
//第五個注意點:流對象使用完後必須關閉
//fileWriter.write("haha");
//第六個注意點:當流對象關閉以後,不能再進行操做,不然會報異常:Stream closed
//fileWriter = new FileWriter("test2.txt",true);
//文件的續寫:FileWriter(String file,boolean value)
//當value位true的時候,不會將原來的內容覆蓋,會接着寫
讀內容:
實例:從文件中讀取內容,並顯示在控制檯------FileReader
//1.建立FileReader的對象
FileReader fileReader = new FileReader("test2.txt");
//2.讀
read():一個字符一個字符的讀,每次讀出一個字符
read(數組):一次能夠讀出多個字符 ,數組的做用:每次會將讀出的字符臨時放到這個數組中
/
//read():一個字符一個字符的讀,每次讀出一個字符 while ((num = fileReader.read())!= -1) { System.out.println((char)num); }
//read(數組):一次能夠讀出多個字符 ,數組的做用:每次會將讀出的字符臨時放到這個數組中
/數組是臨時存放數據的地方,咱們會將讀到的字符放到臨時數組中,數組的大小決定了咱們一次能夠讀到的字符個數.
通常這個數組的大小<=1kB
返回值表明本次讀到的真實的字符個數,若是返回值是-1表明讀完了
char[] arr = new char[2]; int num = 0; while ((num = fileReader.read(arr)) != -1) { System.out.println(new String(arr,0,num)+" num:"+num); }
實例:完成文件的複製
將Demo1的東西複製到Demo1copy.java
D:\workspace\BigDataSZ1903N19\src\com\qianfeng\test\Demo1.java:絕對路徑
BigDataSZ1903N19\src\com\qianfeng\test\Demo1.java:相對路徑
相對路徑:從路徑中間的某個部位開始一直到當前的文件
絕對路徑:一個文件的完整路徑,從根目錄開始到當前的文件
補充知識:
\表明轉義字符 \t:製表符 \n換行符 \\:表示普通的\
在表明路徑的時候,\\與/是一個意思.
//1.建立讀入流和寫出流
FileReader fileReader = new FileReader("D:\\workspace/BigData1923N19\\src\\com\\qf\\test\\Demo1.java");
FileWriter fileWriter = new FileWriter("Demo1copy.java");
字符緩衝流(字符緩衝區)
定義:爲了提升讀寫的能力,自己沒有讀寫的能力,要想進行讀寫就必須藉助於字符流實現.
能夠將緩衝流類比於催化劑或者高速的小車
字符緩衝流分類:
字符緩衝讀入流:BufferedReader 沒有讀的能力
字符緩衝寫出流:BufferedWriter 沒有寫的能力
//0.建立字符寫出流對象
//1.建立字符緩衝寫出流對象
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("text3.txt"));
//2.寫
bufferedWriter.write("bingbing");
//windows系統 換行符 \r\n linux/unix 換行符 \n
//bufferedWriter.write("\r\n");//換行
bufferedWriter.newLine();//換行---支持跨平臺
bufferedWriter.write("chenchen");
//3.關閉資源 a.關閉內部的寫出流 b.關閉本身 c.刷新
bufferedWriter.close();
//1.建立字符緩衝讀入流
BufferedReader bufferedReader = new BufferedReader(new FileReader("text3.txt"));
//一次讀一行 readline()
//原理:一個字符一個字符的讀,直到讀到換行符爲止.而後將全部讀到的字符返回
//注意點:不會將當前的換行符返回 ;返回值就是咱們讀到的內容.若是讀完了,返回null
String data = null; while ((data = bufferedReader.readLine()) != null) { System.out.print(data); //System.out.println();//換行 System.out.print("\r\n"); } bufferedReader.close();