Java中IO流的知識點總結
整體概述
系統中分為臨時儲存和硬碟兩大塊
臨時儲存:當前正在執行的程式提供資源
硬碟:檔案中的資源
IO流就是在這兩者之間進行操作的
IO流分為位元組流和字元流
- 位元組流:
InputStream,OutputStream
- 字元流:
Reader, Writer
位元組流
一切皆位元組
位元組輸出流OutputStream
把臨時儲存的東西存到硬碟上(檔案中)
常用方法
void writer();
void flash();
void close();
其中輸出位元組流子類中最常用的就是FileOutputStream
寫資料的時候會把97轉化為二進位制資料,然後軟體把二進位制檔案解碼成a;
//一次寫一個位元組
public void write(byte b);
//一次寫多個位元組
public void write(byte[] bytes);
public void write(byte[] bytes, int offset, int len);
附加: 字串怎麼轉化為位元組陣列
byte[] bytes = "HelloWorld".getBytes();
資料的追加,續寫
//構造方法
FileOutputStream(String pathname, boolean append);
FileOutputStream(File file, boolean append);
位元組輸入流InputSream
共有的方法
int read()// 返回值是字元的編碼值
int read(byte[] bytes)// 返回值是陣列的長度,bytes是讀取的陣列
void close()
構造方法
FileInputStream(FIle file);
FileInputStream(String name);
一般的讀取工作是這樣的
FileInputStream fis = new FileInputStream("D:\\Java\\javaExmaple1\\src\\practice\\IOStream\\a.txt");
int len = 0;
while((len = fis.read()) != -1)
{
System.out.println((char) len);
}
fis.close();
附加:String類的構造方法
String(byte[] bytes);
//比如
String s = new String(bytes);
先關閉寫的流,再關閉讀的流
字元流
分為字元輸入流和字元輸出流
Reader: 常用 FileReader
Writer: 常用FileWriter
字元輸入流Reader
通用的方法
int read();
int read(char[] cbuf);
void close();
接下來介紹FileReader
FileReader extends InputStreamReader
構造方法
FileReader(String pathname);
FileReader(File file);
附加:
String構造方法
String(char[] chars);
String (byte[] bytes);
字元輸出流Writer
公用的方法
(可以直接寫如字串)
void write(char[] cbuf);
void write(char[] cbuf, int offset, int len);
void write(String str);
void write(String str, int offset, int len);
void flush();//把緩衝流中的資料重新整理到臨時儲存中去
void close();
FileWriter extends OutputStreamWriter
構造方法
FileWriter(File file, boolean append);
FileWriter(String pathname,bollean append);
附加:異常處理
try{
//可能會產生異常的程式碼
}catch(異常類變數 變數名)
{
//異常處理邏輯
}finally{
//一定會執行的程式碼,一般是資源釋放
}
JDK7新特性
try(定義流物件,之後會自動釋放,就不需要finally中間用分號){
//可能會產生異常的程式碼
}catch(異常類變數 變數名)
{
//異常處理邏輯
}
JDK9新特性
A a = new A();
B b = new B();
//這邊也是自動釋放
try(a;b){
//可能會產生異常的程式碼
}catch(異常類變數 變數名)
{
//異常處理邏輯
}
Properties屬性集
java.util.Properties extends Hashtable<K,V>
實現了map類的方法
有兩個特有方法
void store(OutputStream out, String comments)//後面的那個是註解的意思
void store(Writer writer,String comments);//寫入把properties實現類的物件的內容寫入writer了
void load(InputStream in);//讀出把in中的資料讀出到properties實現類的物件中
void load(Reader reader);
還有一些作為hasetable的子類的特有方法,k,v都是字串
prop.setProperty("lwt","173");//設定,存入鍵值對,相當於put
Set<String> set = prop.stringPropertyNames();// 得到鍵的集合 ,通過鍵獲取值
String value = prop.getProperty(key);//通過鍵獲取值
具體實現程式碼
(雜湊表的遍歷不能忘)
public class Demo10Property {
public static void main(String[] args) throws IOException {
show03();
}
private static void show02() throws IOException {
Properties prop = new Properties();
prop.setProperty("lwt","173");//設定,存入鍵值對,相當於put
prop.setProperty("ljy","187");
prop.setProperty("zth","184");
FileWriter fw = new FileWriter("D:\\Java\\javaExmaple1\\src\\practice\\IOStream\\prop.txt");
prop.store(fw,"save data");
fw.close();
}
public static void show01()
{
// Properties繼承了HashTable
// 有三個方法
Properties prop = new Properties();
prop.setProperty("lwt","173");//設定,存入鍵值對,相當於put
prop.setProperty("ljy","187");
prop.setProperty("zth","184");
// 得到鍵的集合 ,通過鍵獲取值
Set<String> set = prop.stringPropertyNames();
for (String key : set) {
// 通過鍵獲取值
String value = prop.getProperty(key);
System.out.println(key + "=" + value);
}
}
public static void show03() throws IOException {
Properties prop = new Properties();
prop.load(new FileReader("D:\\Java\\javaExmaple1\\src\\practice\\IOStream\\prop.txt"));
Set<String> set = prop.stringPropertyNames();
for (String key : set) {
String value = prop.getProperty(key);
System.out.println(key + "=" + value);
}
}
}
相關文章
- Java知識點總結——IO流框架Java框架
- Java中IO流學習總結Java
- Java 知識點總結Java
- 總結的Java知識點集合Java
- Core Java 的知識點總結Java
- Java知識點總結(Java容器-List)Java
- Java知識點總結(Java容器-Vector)Java
- Java知識點總結(Java泛型)Java泛型
- Java知識點總結(Java容器-Set)Java
- 【java學習】java知識點總結Java
- Java基礎知識點總結Java
- java面試知識點總結Java面試
- Java 面試知識點總結Java面試
- 一些關於IO流的知識點
- Java類和物件知識點總結Java物件
- Java集合 - 集合知識點總結概述Java
- Java集合/陣列排序知識與IO流結合例項Java陣列排序
- 知識點總結
- Java基礎面試知識點總結Java面試
- Java知識點總結(註解-介紹)Java
- 常見Java面試知識點總結Java面試
- Java基礎知識回顧之六 —– IO流Java
- Java基礎知識回顧之六 ----- IO流Java
- django知識點總結Django
- iOS 知識點總結iOS
- MongoDB知識點總結MongoDB
- HDFS知識點總結
- HBase知識點總結
- jQuery 知識點總結jQuery
- Kafka知識點總結Kafka
- Tomcat 知識點總結Tomcat
- MySQL知識點總結MySql
- iOS推流器模組知識點淺談總結iOS
- 總結的小知識點(一)
- Java個人知識點總結(基礎篇)Java
- JAVA學習-------第二週知識點總結Java
- IO流中「執行緒」模型總結執行緒模型
- 【JAVA】- 知識點小結Java