|
Posted on 2007-04-22 20:24 ZelluX 閱讀(537) 評(píng)論(0) 編輯 收藏 所屬分類: OOP
2007-02-23 14:53:10 |
先把教材的最后一章看了再說(shuō)
1. File class
四個(gè)常量:pathSeparator, pathSeparatorChar, separator, separatorChar
與常量命名慣例沖突。
2. 幾乎所有的I/O類的方法會(huì)拋出java.io.IOException,在使用時(shí)必須聲明或使用try塊。
3. 文本IO
兩個(gè)基類Reader和Writer,下面分別有InputStreamReader BufferedReader FileReader PrintWriter等子類。
基類的方法Core Java中已經(jīng)看了一部分了。
PrintWriter類并不會(huì)拋出IOException
4. FileReader / FileWriter
Reader及其子類訪問(wèn)一個(gè)并不存在的文件會(huì)拋出IOException的子類FileNotFoundException。
判斷文件結(jié)尾:input.read() == -1
FileWriter的常用構(gòu)造方法:
java.io.FileWriter(java.io.File)
java.io.FileWriter(java.lang.String)
java.io.FileWriter(java.io.File, boolean append)
java.io.FileWriter(java.lang.String, boolean append)
如果文件已經(jīng)存在,前面兩個(gè)構(gòu)造器會(huì)清除該文件的所有內(nèi)容。使用后面兩個(gè)構(gòu)造器,并設(shè)置append為true可以防止這種情況。
也可以在寫(xiě)入前判斷:
if (file.exites()) {
System.out.println(“File temp.txt already exites”);
System.exit(0);
}
5. InputStreamReader / InputStreamWriter
可以在byte和char之間轉(zhuǎn)換。編碼方式可以是默認(rèn)的,也可以由用戶指定。
getEncoding()方法返回當(dāng)前的編碼方式名(String)。由于FileReader和FileWriter是他們的子類,因此也可以使用這個(gè)方法。
6. BufferedReader / BufferWriter
使用了一個(gè)字符數(shù)組作為緩沖區(qū),減少讀寫(xiě)次數(shù),以提高讀寫(xiě)速度。
在輸入時(shí),預(yù)先讀入字符;輸出時(shí),先把內(nèi)容暫存在數(shù)組中,分塊輸出到輸出流。
構(gòu)造器
java.io.BufferedReader(java.io.Reader)
java.io.BufferedReader(java.io.Reader, int)
java.io.BufferedWriter(java.io.Writer)
java.io.BufferedWriter(java.io.Writer, int)
int指定了緩沖區(qū)大小,默認(rèn)為8192字節(jié)。
可以用BufferedReader/Writer類“包裝”任何Reader/Writer流。
String BufferedReader.readLine()方法返回一行不帶有換行符的文本,沒(méi)有則返回null。
void BufferWriter.newLine()方法寫(xiě)入一個(gè)換行符
7. PrintWriter / PrintStream
以文本形式輸出對(duì)象、字符串或者數(shù)值。PrintWriter被設(shè)計(jì)用于代替PrintStream,兩者的輸出功能幾乎相同,但是前者更高效。
System.out就是一個(gè)靜態(tài)的PrintStream對(duì)象,默認(rèn)為屏幕控制端,可以通過(guò)System.setOut(PrintStream)重新設(shè)置。
兩者都有許多重載的print/println方法,以及和C相似的printf。
PrintWriter的構(gòu)造器(并不會(huì)拋出IOException異常)
public PrintWriter(Writer out)
public PrintWriter(Writer out, boolean autoFlush)