傳智博客JAVA基礎第二十三天

1:流的操作規律
A:明確數據源和數據目的
數據源:InputStream,Reader
數據目的:OutputStream,Writer
B:明確數據的內容是否是純文本
是:
數據源:Reader
數據目的:Writer
不是:
數據源:InputStream
數據目的:OutputStream

C:明確具體設備
數據源:鍵盤錄入(System.in),數組或者內存,硬盤文件
數據目的:控制檯顯示(System.out),數組或者內存,硬盤文件

如果字節流想使用字符流的操作方式,可以採用轉換流。

D:明確是否需要提高效率
是:用帶Buffer的流對象
不是:不帶Buffer的流對象

分析如下四種操作:
 文本--文本
 文本--控制檯
 鍵盤錄入--文本
 鍵盤錄入--控制檯

2:打印流(重點)
(1)打印流也是可以直接操作設備的流。也就是說它可以直接對文件進行讀寫操作。
如何區分流是否能夠對文件直接進行讀寫呢?
看其構造方法中是否有String或者File類型的參數用於指定文件。
(2)打印流的特點
分類:PrintStream,PrintWriter
A:能夠打印任意類型的數據
B:能夠啓動自動刷新功能
(3)用打印流改寫鍵盤錄入數據寫入文件
//用緩衝流讀寫
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

String line = null;
while((line=br.readLine())!=null)
{
if("over".equals(line))
{
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}

bw.close();
br.close();

//用打印流改進
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(System.out,true);

String line = null;
while((line=br.readLine())!=null)
{
if("over".equals(line))
{
break;
}
pw.println(line);
}

pw.close();
br.close();

(4)用打印流複製文本文件
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true);

String line = null;
while((line=br.readLine())!=null)
{
//write,print,println
pw.println(line);
}

pw.close();
br.close();

3:對象流
(1)爲了把對象進行存儲,方便下次使用。java提供了對象流對其進行操作。
(2)要把一個對象進行寫入操作,必須讓該對象實現序列化接口。
序列化接口沒有抽象方法的,可以看成是一個標識接口。
(3)對象的基本讀寫代碼
//李小龍,李連杰,甄子丹,吳京
Student s = new Student("甄子丹",20);

//寫數據
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("oos.txt"));
oos.writeObject(s);
oos.close();

//讀取數據
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("oos.txt"))
Student s = (Student)oos.readObject();
ois.close();

System.out.println(s.getName()+"***"+s.getAge());
(4)一般我們把對象實現序列化接口後,會給其生成一個序列化編號。

4:Properties
(1)可以和IO結合的Map集合對象。
(2)Properties裏面的特殊方法
A:list 把數據打印到文件中
B:load 把數據加載到Properties對象中
C:store 把Properties對象中的數據保存到文件中

練習:
A:把指定目錄下的所有java文件結尾的文件的路徑寫入到一個文本文件中
B:統計應用程序的執行次數

5:設備是內存的流對象(重點)
(1)ByteArrayInputStream,ByteArrayOutputStream
(2)CharArrayReader,CharArrayWriter
(3)StringReader,StringWriter

6:編碼問題(重點)
(1)編碼表的由來
(2)常見的編碼表
A:ASCII碼錶
B:ISO-8859-1
C:gb2312,GBK
D:UTF-8 (是unicode的一種實現)
(3)轉換流在編碼中應用
字符流 = 字節流 + 編碼表
(4)字符串在編碼中應用
編碼:String -- byte[]
解碼:byte[] -- String
要能夠分析出GBK和UTF-8進行編解碼出現亂碼的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章