c++文件流读取一行_「软帝学院」Java挑战者专栏:IO流详解2
生活随笔
收集整理的這篇文章主要介紹了
c++文件流读取一行_「软帝学院」Java挑战者专栏:IO流详解2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
軟帝學院筆記Day18
IO流(字符流FileReader)
- 1.字符流是什么
- 字符流是可以直接讀寫字符的IO流
- 字符流讀取字符, 就要先讀取到字節數據, 然后轉為字符. 如果要寫出字符, 需要把字符轉為字節再寫出.
- 2.FileReader
- FileReader類的read()方法可以按照字符大小讀取
- FileReader fr = new FileReader("aaa.txt"); //創建輸入流對象,關聯aaa.txt int ch; while((ch = fr.read()) != -1) { //將讀到的字符賦值給ch System.out.println((char)ch); //將讀到的字符強轉后打印 } fr.close(); //關流
21.02_IO流(字符流FileWriter)
- FileWriter類的write()方法可以自動把字符轉為字節寫出FileWriter fw = new FileWriter("aaa.txt"); fw.write("aaa"); fw.close();
IO流(字符流的拷貝)
FileReader fr = new FileReader("a.txt");FileWriter fw = new FileWriter("b.txt");int ch;while((ch = fr.read()) != -1) { fw.write(ch);}fr.close();fw.close();IO流(什么情況下使用字符流)
- 字符流也可以拷貝文本文件, 但不推薦使用. 因為讀取時會把字節轉為字符, 寫出時還要把字符轉回字節.
- 程序需要讀取一段文本, 或者需要寫出一段文本的時候可以使用字符流
- 讀取的時候是按照字符的大小讀取的,不會出現半個中文
- 寫出的時候可以直接將字符串寫出,不用轉換為字節數組
IO流(字符流是否可以拷貝非純文本的文件)
- 不可以拷貝非純文本的文件
- 因為在讀的時候會將字節轉換為字符,在轉換過程中,可能找不到對應的字符,就會用?代替,寫出的時候會將字符轉換成字節寫出去
- 如果是?,直接寫出,這樣寫出之后的文件就亂了,看不了了
IO流(自定義字符數組的拷貝)
- FileReader fr = new FileReader("aaa.txt"); //創建字符輸入流,關聯aaa.txt FileWriter fw = new FileWriter("bbb.txt"); //創建字符輸出流,關聯bbb.txt int len; char[] arr = new char[1024*8]; //創建字符數組 while((len = fr.read(arr)) != -1) { //將數據讀到字符數組中 fw.write(arr, 0, len); //從字符數組將數據寫到文件上 } fr.close(); //關流釋放資源 fw.close();
IO流(帶緩沖的字符流)
- BufferedReader的read()方法讀取字符時會一次讀取若干字符到緩沖區, 然后逐個返回給程序, 降低讀取文件的次數, 提高效率
- BufferedWriter的write()方法寫出字符時會先寫到緩沖區, 緩沖區寫滿時才會寫到文件, 降低寫文件的次數, 提高效率
- BufferedReader br = new BufferedReader(new FileReader("aaa.txt")); //創建字符輸入流對象,關聯aaa.txt BufferedWriter bw = new BufferedWriter(new FileWriter("bbb.txt")); //創建字符輸出流對象,關聯bbb.txt int ch; while((ch = br.read()) != -1) { //read一次,會先將緩沖區讀滿,從緩沖去中一個一個的返給臨時變量ch bw.write(ch); //write一次,是將數據裝到字符數組,裝滿后再一起寫出去 } br.close(); //關流 bw.close();
IO流(readLine()和newLine()方法)
- BufferedReader的readLine()方法可以讀取一行字符(不包含換行符號)
- BufferedWriter的newLine()可以輸出一個跨平臺的換行符號""
- BufferedReader br = new BufferedReader(new FileReader("aaa.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("bbb.txt")); String line; while((line = br.readLine()) != null) { bw.write(line); //bw.write(""); //只支持windows系統 bw.newLine(); //跨平臺的 } br.close(); bw.close();
IO流(將文本反轉)
- 將一個文本文檔上的文本反轉,第一行和倒數第一行交換,第二行和倒數第二行交換
IO流(LineNumberReader)
- LineNumberReader是BufferedReader的子類, 具有相同的功能, 并且可以統計行號
- 調用getLineNumber()方法可以獲取當前行號
- 調用setLineNumber()方法可以設置當前行號
- LineNumberReader lnr = new LineNumberReader(new FileReader("aaa.txt")); String line; lnr.setLineNumber(100); //設置行號 while((line = lnr.readLine()) != null) { System.out.println(lnr.getLineNumber() + ":" + line);//獲取行號 } lnr.close();
IO流(裝飾設計模式)
- interface Coder { public void code(); } class Student implements Coder { @Override public void code() { System.out.println("javase"); System.out.println("javaweb"); } } class HeiMaStudent implements Coder { private Student s; //獲取到被包裝的類的引用 public ItcastStudent(Student s) { //通過構造函數創建對象的時候,傳入被包裝的對象 this.s = s; } @Override public void code() { //對其原有功能進行升級 s.code(); System.out.println("數據庫"); System.out.println("ssh"); System.out.println("安卓"); System.out.println("....."); } }
IO流(使用指定的碼表讀寫字符)
- FileReader是使用默認碼表讀取文件, 如果需要使用指定碼表讀取, 那么可以使用InputStreamReader(字節流,編碼表)
- FileWriter是使用默認碼表寫出文件, 如果需要使用指定碼表寫出, 那么可以使用OutputStreamWriter(字節流,編碼表)
- BufferedReader br = //高效的用指定的編碼表讀 new BufferedReader(new InputStreamReader(new FileInputStream("UTF-8.txt"), "UTF-8")); BufferedWriter bw = //高效的用指定的編碼表寫 new BufferedWriter(new OutputStreamWriter(new FileOutputStream("GBK.txt"), "GBK")); int ch; while((ch = br.read()) != -1) { bw.write(ch); } br.close(); bw.close();
IO流(轉換流圖解)
- 畫圖分析轉換流
IO流(獲取文本上字符出現的次數)
- 獲取一個文本上每個字符出現的次數,將結果寫在times.txt上
IO流(試用版軟件)
- 當我們下載一個試用版軟件,沒有購買正版的時候,每執行一次就會提醒我們還有多少次使用機會用學過的IO流知識,模擬試用版軟件,試用10次機會,執行一次就提示一次您還有幾次機會,如果次數到了提示請購買正版
File類(遞歸)
- 5的階乘
File類(練習)
- 需求:從鍵盤輸入接收一個文件夾路徑,打印出該文件夾下所有的.java文件名
IO流(總結)
- 1.會用BufferedReader讀取GBK碼表和UTF-8碼表的字符
- 2.會用BufferedWriter寫出字符到GBK碼表和UTF-8碼表的文件中
- 3.會使用BufferedReader從鍵盤讀取一行
最后,開發這么多年我也總結了一套學習Java的資料,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯系方式,有時間記得幫我點下轉發讓跟多的人看到哦。
總結
以上是生活随笔為你收集整理的c++文件流读取一行_「软帝学院」Java挑战者专栏:IO流详解2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++实现单链表的反序
- 下一篇: Qt中颜色选择框输出所选中的颜色值