技術部落格—io流部分:
今日學習要點:
一、轉換流;
二、流的基本操作;
三、物件的序列化;
四、隨機檔案的操作;
1、reader ---inputstreamreader,檔案輸入流,專門讀取字元流的物件檔案!
writer ---outputstreamwriter 檔案輸出流,專門同於處理字元流的檔案。
reader 和writer 是字元流和位元組檔案轉換的橋梁,
而且在裝換過程中還能進行指定的編碼轉換!
建構函式:
inputstreamreader(inputstream):通過該建構函式初始化,使用的是本系統預設的編碼表gbk。
inputstreamreader(inputstream,string charset):通過該建構函式初始化,可以指定編碼表。
outputstreamwriter(outputstream):通過該建構函式初始化,使用的是本系統預設的編碼表gbk。
outputstreamwriter(outputstream,string charset):通過該建構函式初始化,可以指定編碼表。
filereader fr = new filereader("a.txt");//操作a.txt的中的資料使用的本系統預設的gbk。
//很重要的乙個東西,
既然是資料匯,那麼一定是輸出流,可以用的outputstream,writer。
往檔案中儲存的都是文字資料,那麼可以使用字元流較為方便:writer.
因為操作的是乙個檔案。所以使用writer中的filewriter。
是否要提高效率呢?是,那就使用bufferedwriter.
//string charset = system.getproperty("file.encoding");
string charset = "utf-8";
bufferedwriter bufw = new bufferedwriter(new outputstreamwriter(new
fileoutputstream("a.txt"),charset);
objectinputstream
objectoutputstream
可以通過這兩個流物件直接操作已有物件並將物件進行本地持久化儲存。
儲存後的物件可以進行網路傳輸。
兩個物件的特有方法:
objectinputstream
object readobject():該方法丟擲異常:classnotfountexception。
objectoutputstream
void writeobject(object):被寫入的物件必須實現乙個介面:serializable
否則會丟擲:notserializableexception
serializable:該介面其實就是乙個沒有方法的標記介面。
用於給類指定乙個uid。該uid是通過類中的可序列化成員的數字簽名運算出來的乙個long型的值。
只要是這些成員沒有變化,那麼該值每次運算都一樣。
該值用於判斷被序列化的物件和類檔案是否相容。
如果被序列化的物件需要被不同的類版本所相容。可以在類中自定義uid。
定義方式:static final long serialversionuid = 42l;
注意:對應靜態的成員變數,不會被序列化。
對應非靜態也不想被序列化的成員而言,可以通過transient關鍵字修飾。
通常,這兩個物件成對使用。
IO流部分總結
1 io流的分類 方向,輸入流 inputstream,reader 與輸出流 outputstream,writer 處理單元 位元組流 inputstream,outputstream 和字元流 reader,writer 是否直接與裝置相連 節點流 fileinputstream fileou...
IO流技術 檔案複製
複製文字檔案。既然是文字涉及編碼表。需要用字元流。操作的是檔案,涉及硬碟。有指定碼表嗎?沒有,預設就行。操作的是檔案,使用的預設碼表。使用哪個字元流物件。直接使用字元流操作檔案的便捷類。filereader filewriter public class copytextfiletest publi...
IO流 字元流 IO流小結 IO流案例總結
1 字元流 掌握 1 位元組流操作中文資料不是特別的方便,所以就出現了轉換流。轉換流的作用就是把位元組流轉換字元流來使用。2 轉換流其實是乙個字元流 字元流 位元組流 編碼表 3 編碼表 a 就是由字元和對應的數值組成的一張表 b 常見的編碼表 ascii iso 8859 1 gb2312 gbk...