JAVA IO

1.輸入和輸出:

  輸入:inputStream,從多種起源地讀取數據輸入到內存中;這些起源地包括如下:

1)字節數組

2)String對象

3)文件

4)管道

5)socket

衍生類:

ByteArrayInputStream字節緩衝區讀取;

DataInputStream基本類型讀取;

StringBufferInputStream字符串緩衝流讀取;

FileInputStream文件緩衝流;

PipedInputStream管道緩衝流;

緩衝流對於inputStream來說,讀取效率要高,但是,要注意在使用完畢之後,關閉緩衝流,釋放掉相應的緩衝內存。

輸出:outputStream,將內存數據寫入到指定的目的地;

ByteArrayOutputStream    字節緩衝區寫入;

DataOutputStream基本類型數據寫入;支持多種基本類型的write

FileOutputStream文件緩衝寫入;

PipedOutputStream管道緩衝寫入;

RandomAccessFile:

用來訪問那些保存數據記錄的文件的,可以用seek()進行訪問,且進行讀寫;還可以實現文件的大小,跳過指定長度等;

不是inputStream和outputStream的衍生類;

File類:既代表一個特定文件名字,又代表目錄內一系列文件的名字;

Reader/Writer與InputStream/OutputStream的關係:

1)並不是Reader/Writer替換了InputStream/OutputStream,而是保持向後兼容;

2)InputStream/OutputStream是java1.0提供的;Reader/Writer是java1.1提供的;

3)InputStream只支持8位字節流,Reader/Writer支持16位字節流,(java內含的char是16位的Unicode);

4)未做改動的幾個stream:

DataOutputStream 作爲一種按數據格式保存和獲取數據的流

File

RandomAccessFile

SequenceInputStream

5)流轉換示例:

DataInputStream  in=new DataInputStream( new BufferedInputStream( new  FileInputStream("data.txt")));

BufferedReader inbr=new BufferedReader( new InputStreamReader(in));

in.readDouble();

inbr.readLine();

String s2=new String("sssss");

StringReader  s2sr=new StringReader(s2);

文件解壓縮:

java1.1提供的壓縮類功能是從InputStream/OutputStream拓展出來的;

CheckedInputStream   GetCheckSum()   附加驗證碼的解壓操作

CheckedOutputStream GetCheckSum() 附加驗證碼的壓縮操作

DeflaterOutputStream 用於壓縮類的基礎類:

ZipOutputStream DeflaterOutputStream 的拓展類,將數據壓縮成Zip文件格式;

GZIPOutputStream DeflaterOutputStream 的拓展類,將數據壓縮成GZIP文件格式;

DeflaterInputStream用於解壓類的基礎類:

ZipInputStream DeflaterInputStream的拓展類,解壓用Zip文件格式保存的數據;

GZIPInputStream DeflaterInputStream的拓展類,解壓用GZIP文件格式保存的數據;

注意:在使用GZIP進行解壓縮時,如果要支持中文,則將編碼方式設置爲GBK;

ASCII  GBK  uncode  utf-8(utf-16)的關係:

都是字符編碼,字符只有被編碼後纔可以被計算機識別,而轉換後的就稱之爲計算機的內碼,早期的計算機使用7位的ASCII編碼,爲了處理漢字,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。

GBK編碼長度是兩個字節,包含全部中文,utf-8是因爲一個字節,漢字三個字節,它是由uncode發展而來的,uncode支持全世界的文字編碼;utf-8針對英文編碼效率更高;

     UTF-8就是以8位爲單元對UCS進行編碼;UTF-16以16位爲單元對UCS進行編碼;uncode只是一個編碼方案,而utf編碼則要用於實際傳輸;GBK也要用於實際傳輸;

    ASCII、GB2312、GBK到GB18030的編碼方法是向下兼容的。而Unicode只與ASCII兼容(更準確地說,是與ISO-8859-1兼容),與GB碼不兼容 如果GBK要轉UTF-8必須先轉uncode碼,再轉utf-8就OK了.

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