轉換流指定編碼表utf 8寫入檔案

2021-07-15 12:28:52 字數 3405 閱讀 8372

/*

字元流://用於文字

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 檢測字串...