大數據學習路線分享IO流學習筆記

大數據學習路線分享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();
相關文章
相關標籤/搜索