您好,登錄后才能下訂單哦!
什么是流?
流:程序和設備之間連接起來的一根用于數據傳輸的管道,流就是一根管道。
流的分類:
按數據流的方向不同可以分為輸入流和輸出流。
按處理數據單位不同可以分為字節流和字符流。(一個字符是兩個字節)
按功能不同可以分為節點(原始)流和處理(包裹)流。
字節流 字符流
輸入流 InputStream Reader
輸出流 OutputStream Writer
文件流:
讀取一個文件內容并將其輸出到顯示器上,并統計讀取出來的字節的個數。字符串來表示操作系統的文件路徑時,我們可以使用\\和/兩種方式來作為文件夾的路徑分隔符。
什么是字節流?
FileInputStream FileOutputStream
什么是字符流?
FileReader FileWriter
eg: import java.awt.*; public class test{ public static void main(String[] args){ FileReader fr=new FileRead("D:\\share\\test.java"); FileWriter fw=new FileWrite("d:/zhangsan.haha"); int ch; ch=fr.read(); while(-1 != ch){ fw.write(ch); //將test文件中fr的數據讀給程序,再將程序中的數據寫給fw的zhangsan文件夾中 ch=fr.read(); } fw.flush(); fr.close(); fw.close(); } }
字符流和字節流的區別:
字節流可以完成所有格式文件的賦值
字符流值可以完成文本文件的復制,卻無法完成視頻格式文件的復制。
因為字節是不需要解碼和編碼的,將字節轉化為字符才存在解碼和編碼的問題。
字節流可以從所有格式的設備中讀取數據,但字符流只能從文本格式的設備中讀寫數據。如果通過一個字節流把文本文件的內容輸出到顯示器上,當輸出漢字時就會出現亂碼。
緩沖流:Buffered
緩沖流就是帶有緩沖區的輸入輸出流
緩沖流可以顯著的減少我們對IO訪問的次數,保護我們的硬盤。
緩沖流本身就是處理流,必須依附于節點流,處理流是包裹在原始節點上的流,相當于包括在管道上的管道。
BufferedInputStream :帶緩沖的輸出流,允許一次向硬盤寫入多個字節的數據
BufferedOutputStream :帶緩沖區的輸入流,允許一次向程序中讀入多個字節的數據
BufferedWriter BufferedReader可以提高讀寫文本文件內容的速度
eg: import java.awt.*;//帶緩沖區的字節流處理文件的速度要快于不帶緩沖區的字節流。 public class test{ public static void main(String[] args){ BufferedInputStream bis=new BufferedInputStream (new FileRead("D:\\share\\test.java")); BufferedOutputStream bos= new BufferedOutputStream (new FileWrite("d:/zhangsan.haha")); byte[] buf=new byte[1024]; int len; len=bis.read(buf); while(-1 != len){ bos.write(buf,0,len ); len=bis.read(buf); } bos.flush(); bos.close(); bis.close(); } }
轉換流:
outputStreamWrite 流是把OutputStrean流轉換成Writer流的流
inputStreamReader 流是把inputStrean流轉換成Reader流的流
print流:
print流只有輸出,沒有輸入
PrintWriter 輸出字符 PrintStream輸出字節
printWriter 與 printStream的區別:
printWriter提供了PrintStream的所有打印方法,既可以封裝OutputStream,也能封裝Writer.而PrintStream只能封裝OutputStream類型的字節流。
標準輸入輸出的重定向:
編程實現將鍵盤輸入的數據輸入到A文件中,如果輸入有誤,則把出錯信息輸出到B文件中。
eg: public class test{ public static void main(String[] args){ PrintStream psOut=null; PrintStream psError=null; Scanner sc=null; try{ psOut=new PrintStream("d:/Out.txt"); psError=new PrintStream("d:/error.txt"); sc=new Scanner(System.in); int num; System.setOut(psOut); System.setErr(psError); while(true){ num=sc.nextInt(); System.out.println(num); } } catch(Exception e){ System.out.println("出錯信息是:"); e.printStackTrace(); } } } }
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。