Java中的輸入輸出總結
Java中的輸入輸出總結
標籤(空格分隔): java
參考:Java線上中文文件
IO這塊的類,介面什麼的實在是太多了,一直沒有好好的理清過,下面花點時間來深入的掌握一下。原理還要慢慢地梳理。
輸入輸出體系介紹
什麼是輸入輸出處理(IO)
包括對控制檯,記憶體,檔案,圖形影像,網路和資料庫的讀寫等。在Java語言中,java.io包就提供了
很多完成輸入輸出處理功能。
什麼是流?
流是一種有序的位元組源或目的,當程式需要讀取資料時就要開啟一個通向資料來源的流;而當程式需要
寫入資料的時候就會開啟一個通向目的地的流,資料就好像在管道中流動一樣。
流的分類
將流按三種方式分類:輸入流和輸出流,位元組流和字元流,以及從一個特定地方讀寫的結點流和連線已經存在的流的過濾流。這種分類方式是相互重疊的
- 輸入流和輸出流
- 位元組流和字元流
- 從一個特定地方讀寫的結點流和連線已經存在的流的過濾流
基本流的介紹
基本流一般是指
- InputStream
- OutputStream
- Reader
- Writer
這四個抽象類表示的流,其他流均是他們派生出來的子類。其中InputStream
與OutputStream
是處理8位的位元組流資料,Reader
和Writer
是處理16位的字元流資料。注意的是,位元組流和字元流可以相互之間進行轉換,使用的就是轉換器InputStreamReader
和OutputStreamWriter
,InputStreamReader
將位元組流InputStream
轉換為Reader
的字元流。同理OutputStreamWriter
將OutputStream
位元組流轉換為Writer
的字元流。
- 過濾流
FilterInputStream
和FileterOutputStream
繼承基本流,並實現了過濾介面DataInput
和DataOutput
- 物件流
ObjectInputStream
和ObjectOutputStream
也繼承基本流,並實現了物件介面ObjectInput
和ObjectOutput
隨機檔案
RandomAccessFile
也實現了過濾介面,目的就是為了簡化讀寫手續,統一資料讀寫方法。檔案流完成對磁碟檔案的讀寫,而檔案類File主要是管理檔案或者資料夾的屬性
位元組輸入輸出系列(位元組IO)
位元組輸入輸出,以InputStream為代表的輸入和以OutputStream為代表的輸出,它們和自己的子類一起構成了位元組輸入輸出體系。
位元組輸入輸出
InputStream
這個類是一個抽象類,為所有位元組輸入類的父類,其方法都是通過子類物件來呼叫的,主要方法有
OutputStream
這個類是抽象類,是所有位元組輸出類的父類,其方法都是通過子類物件來呼叫
位元組標準輸入輸出
位元組標準輸入流
System.in就是位元組標準輸入流的物件。主要接收控制檯的輸入,並提供read()方法讀取資料。可以使用InputStream類的所有方法。這個物件有兩種使用方式
- 使用Scanner掃描輸入流物件,實現從控制檯輸入
Scanner in = new Scanner(System.in);
- 使用InputStreamReader將System.in轉換成字元流,再進行下一步操作。或者再用BufferedReader包裝一下。
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
位元組標準輸出流
System.out就是標準輸出流PrintStream的一個物件,主要完成資料的格式化輸出和在控制檯中輸出各種資料型別結果。PrintStream是OutputStream的子類,因此System.out可以使用OutputStream的所有方法。自身的format()和printf()方法很有趣。,。,。
(沒有想到一直使用這個東西,居然原理在今天被發現了,System.out是一個PrintStream物件,println()是該物件呼叫的一個方法,。,。,。
位元組檔案輸入輸出
FileInputStream
該類是InputStream的子類,用於完成讀取檔案的位元組值功能,還可以讀取如影像資料之類的原始資料流。
常用的構造方法:
- FileInputStream(File file):通過已經存在的File類物件進行構造
- FileInputStream(String filename):直接使用檔名進行構造
FileOutputStream
該類是OutputStream的子類,用於將資料寫入位元組檔案輸出流,也可寫入影像資料之類道德原始位元組流。
常用的構造方法:
- FileOutputStream(File file):通過已經存在File類物件進行構造
- FileOutputStream(String name):通過名字進行構造
位元組過濾輸入輸出
過濾流的作用是能夠在讀寫資料的同時對資料進行處理,並且提供同步機制,使得某一個時刻只有一個執行緒訪問這個輸入輸出流,防止多個執行緒同時對同一個輸入輸出流進行操作帶來的壞結果。使用時必須把過濾流與某個具體的輸入輸出流相連線。
通常的做法是在構造方法的引數中指定要連線的輸入輸出流。
過濾流的父類是FileInputStream和FilterOutputStream,最常用的是他們的子類DataInputStream和DataOutputStream,用於完成平臺無關的位元組過濾輸入輸出處理。
DataInputStream
DataOutputStream
字元輸入輸出系列(字元IO)
輸入輸出兩大分支,以Reader為父類的字元輸入,以Writer為父類的字元輸出。它們與各自的子類共同構成了字元輸入輸出體系
字元輸入輸出
Reader
是一個用於讀取字元類的抽象類,為所有字元輸入類的父類,其方法都是通過子類物件來呼叫的。
Writer
是一個用於寫入字元流的抽象類,為所有輸出字元類的父類,其方法都是通過子類物件來呼叫的。
字元標準輸出
,。,。,這裡沒有字元標準輸入
PrintWriter,主要完成字元標準輸出流的文字格式化
常用構造方法:
- 由檔名構造字元標準輸出流物件
PrintWriter pw=new PrintWriter("data.txt");
- 由位元組輸出流構造字元標準輸出流物件
PrintWriter pw=new PrintWriter(System.out);
- 由字元標準輸出流物件構造新的字元標準輸出流物件
PrintWriter pw1=new PrintWriter(pw);
字元緩衝輸入輸出
BufferedReader
從字元輸入流中讀取文字並緩衝各個字元,以便提供關於字元,陣列和文字行的高效讀取方式,還可以改變緩衝區的大小。
常用的構造方法:
BufferedReader br=new BufferedReader(Reader in);
普通方法常用就是:String readLine()讀取一行字串,並去掉回車換行符。
BufferedWriter
將文字寫入字元輸出流並緩衝各個字元,以提供單個字元,陣列和字串的高效寫入方式,緩衝區的大小可以改變。常用的構造方法是BufferedWriter(Writer out),常用的方法是:void newLine(),用於寫入一個回車符。
字元檔案輸入輸出
FileReader類和FileWriter類。
FileReader
用來讀取字元檔案;
常用構造方法:
- FileReader(File file)
- FileReader(String filename)
FileWriter
用來寫入字元檔案。
構造方法:
字串輸入輸出
StringReader
使用字串輸入流讀取一個字串,構造方法:
StringReader(String string);
StringWriter
通過字元流的字串緩衝區的輸出來構造字串,構造方法:
StringWriter()
相關文章
- 演算法競賽中的常用輸入輸出總結演算法
- 重學java中的輸入輸出流Java
- 詳解Java中的IO輸入輸出流!Java
- Java 輸入輸出流Java
- Java —— 標準輸入輸出Java
- Java基礎輸入輸出Java
- Java------簡單的輸入/輸出Java
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- 輸出輸入函式彙總函式
- 直播app原始碼,Java的輸入輸出APP原始碼Java
- JAVA筆記(12)——輸入和輸出Java筆記
- 演算法題 - ACM 模式中常用輸入輸出用法總結演算法ACM模式
- 輸入輸出
- 資料的輸入輸出
- 輸入輸出流
- 2022年總結:輸入年
- Java IO輸入輸出及亂碼問題Java
- ACM的Python版輸入輸出ACMPython
- 1.輸入輸出
- 【C++】輸入輸出C++
- 輸入輸出系統
- shell——shell輸入輸出
- Python資料的輸入與輸出Python
- AUTOCAD——圖形的輸入與輸出
- python:檔案的輸入與輸出Python
- python ----輸入輸出 變數Python變數
- C語言輸入輸出C語言
- 03 資料輸入-輸出
- 格式化輸入輸出
- Shell輸入\輸出重定向
- Python輸入和輸出(IO)Python
- C語言之輸入輸出C語言
- python 標準輸入輸出Python
- 常用輸入輸出函式函式
- 排序,檔案輸入輸出排序
- Linux 下的檔案管理&管理系統中的輸出輸入Linux
- 基本的python知識 (輸入和輸出)Python
- 關於c語言輸入字串的總結C語言字串
- Java I/O系統學習系列二:輸入和輸出Java