/*
字元流://用於文字
filereader
filewriter
bufferedreader
bufferedwriter
位元組流://用於其他,如,**等
fileinputstream
fileoutputstream
bufferedinputstream
bufferedoutputstream
通過剛才的鍵盤錄入一行資料並列印其大寫,發現其實就是讀一行資料的原理。
也就是readline方法
能不能直接使用readline方法來完成鍵盤錄入的一行資料的讀取呢?
readline方法是字元流bufferedreader類中的方法.
而鍵盤錄入的read方法是位元組流在使用字元流緩衝區的readline方法呢?
1.源:鍵盤錄入
目的:控制台
2需求:想把鍵盤錄入的資料儲存到乙個檔案中.
源:鍵盤
目的:檔案
3,需求:想要將乙個檔案的資料列印在控制台上.
源:檔案
目的:控制台
流操作的基本規律:
最痛苦的就是流物件有很多,不知道該用哪乙個.
通過三個明確來完成
1,明確源和目的.
源:輸入流.inputstream reader
目的:輸出流 outpurtstream writer
2,操作的資料是否是純文字.
是:字元流
不是:位元組流
3,當體系明確後,在明確要使用哪個具體的物件
通過裝置來進行區分:
源裝置:記憶體,硬碟,鍵盤
目的裝置:記憶體,硬碟,控制台
1,文字
將乙個文字檔案中資料儲存到另乙個檔案中.複製檔案.
源:檔案 inputstream reader 因為是源,所以使用讀取流
是不是操作文字檔案.
是!這時就可以選擇reader
這樣體系就明確了.
接下來明確要使用該體系中的哪個物件.
明確裝置:檔案 硬碟.上乙個檔案
reader體系中可以操作檔案的物件是 filereader
是否需要提高效率:是!.加入reader中的緩衝區 bufferedreader
filereader fr = new filereader("a.txt")
bufferedreader bufr = new bufferedreader(fr);
目的:檔案 outputstream writer
是否是純文字.
是!writer
裝置:硬碟,乙個檔案
writer體系中可以操作檔案的物件是filewriter
是否需要提高效率:是!.加入writer中的緩衝區 bufferedwriter
filewriter fw = new filewriter("b.txt");
bufferedwriter bufw = new bufferedwriter(fw);
1 b ,非文字練習:
將乙個檔案儲存到另乙個檔案中.複製檔案.要按照以上格式完成三個明確
源:檔案 inputstream reader 因為是源,所以使用讀取流
是不是操作文字檔案.
不是!這時就可以選擇fileinputstream
是否需要提高效率:是!.加入inputstream中的緩衝區
bufferedinputstream bis = new bufferedinputstream(fis);
目的:檔案 outputstream writer
是否是純文字.
不是!fileooutputstream
裝置:硬碟,乙個檔案
是否需要提高效率:是!.加入outputstream中的緩衝區
bufferedoutputstream bos = new bufferedoutputstream(fos);
2.要求:將鍵盤錄入的資料儲存到乙個檔案中。
這個要求中有源和目的都存在。
那麼分別分析
源:鍵盤錄入 inputstream reader
是不是純文字?是!reader
裝置:鍵盤。對應的物件是system.in
不是選擇reader嗎?system.in對應的不是位元組流嗎?
為了操作鍵盤的文字資料方便。轉成字串操作是最方便的。
所以既然明確了reader,那麼就將system.in轉換成reader.
用了reader體系中轉換流,inputstreamreader
inputstreamreader isr = new inputstreamreader(system.in);
需要提高效率嗎?需要!bufferedreader
bufferedreader bufr = new bufferedreader(isr);
目的:outputstream writer
是否是純文字:是!writer
裝置:硬碟。乙個檔案。使用 filewriter
filewriter fw = new filewriter("c.txt");
需要提高效率嗎?需要。
bufferedwriter bufw = new bufferedwriter(fw);
***************
擴充套件一下,想要把錄入的資料按照指定的編碼表(utf-8),將資料存到檔案中
目的:outputstream writer
是否是純文字:是!writer
裝置:硬碟。乙個檔案。使用 filewriter
但是filewriter是使用的預設編碼表.gbk
但是儲存時,需要加入指定編碼表utf-8,而指定的編碼表只有轉換流可以指定。
所以要使用的物件是outputstreamwriter。
而該轉換流物件要接收乙個位元組輸出流。而且還可以操作的檔案的位元組輸出流 fileoutputstream
outputstreamwriter osw = new outputstreamwriter(new fileoutputstream("d.txt"),"utf-8");
需要提高效率嗎?需要。
bufferedwriter bufw = new bufferedwriter(osw);
所以,記住,轉換流什麼時候使用,字元和位元組之間的橋梁,通常,涉及到字元編碼轉換時,
需要用到轉換流
*/class transstreamdemo2
bufr.close();
}}
UTF8 編碼轉換 騰訊
utf 8是現在流行的編碼方式,下面是rfc2279對utf 8編碼規則的規定 ucs 4 range hex.utf 8 octet sequence binary 0000 0000 0000 007f 0 x 0000 0080 0000 07ff 110 xx 10 0000 0800 00...
ANSI與UTF 8編碼轉換
將ansi編碼裝換為utf 8在windows mfc環境下測試下面的 static int ansi2utf8 in const char csrc,out char cdest 以下 將utf 8 轉換為gb2312 intutf8togb2312 const char sourcebuf,si...
轉換編碼到utf 8
轉換編碼,通常是轉換為utf 8 param string string 要轉換的字串 param string toencode 要轉換為的編碼,預設為utf 8 return string function convert encoding string,to encode utf 8 檢測字串...