處理流_轉換流(字元流)
阿新 • • 發佈:2020-07-22
處理流_轉換流(字元流)
InputStreamReader:將InputStream轉換為Reader,實現位元組的輸入流轉換為字元的輸入流
/** * 處理六:轉換流的使用 * 1.轉換流:屬於字元流 * InputStreamReader:將一個位元組的輸入流轉換為字元的輸入流 * OutputStreamWriter:將一個字元的輸出流轉換為位元組的輸出流 * * 2.作用:提供字元與位元組之間的轉換 * 3.解碼:位元組、陣列 ---》 字元、字串 InputStreamReader * 編碼:字元、字串 ---》 位元組、陣列 OutputStreamWriter * * 4.字符集 */ public class IOStreamReaderAndWriter { public static void main(String[] args) { InputStreamReader inputStreamReader = null; try { FileInputStream fileInputStream = new FileInputStream("基礎語法\\a.txt"); // InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);//使用系預設的字符集 UTF-8 //使用utf-8 取決於原來儲存時的字符集 inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8"); char[] cbuf = new char[20]; int len; while ((len = inputStreamReader.read(cbuf)) != -1){ String string = new String(cbuf,0,len); System.out.println(string); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (inputStreamReader != null) inputStreamReader.close(); } catch (IOException e) { e.printStackTrace(); } } } }
OutputStreamWriter:將Writer轉換為OutputStream
/** * 處理六:轉換流的使用 * 1.轉換流:屬於字元流 * InputStreamReader:將一個位元組的輸入流轉換為字元的輸入流 * OutputStreamWriter:將一個字元的輸出流轉換為位元組的輸出流 * * 2.作用:提供字元與位元組之間的轉換 * 3.解碼:位元組、陣列 ---》 字元、字串 InputStreamReader * 編碼:字元、字串 ---》 位元組、陣列 OutputStreamWriter * * 4.字符集 * */ public class IOStreamReaderAndWriter { public static void main(String[] args) { InputStreamReader inputStreamReader = null; OutputStreamWriter outputStreamWriter = null; try { /* 綜合使用InputStreamReader和OutputStreamWriter 實現文字檔案字符集的轉換 */ //造檔案 、造流 File file1 = new File("基礎語法\\a.txt"); File file2 = new File("基礎語法\\gbk_a.txt"); FileInputStream fileInputStream = new FileInputStream(file1); FileOutputStream fileOutputStream = new FileOutputStream(file2); inputStreamReader = new InputStreamReader(fileInputStream,"utf-8"); outputStreamWriter = new OutputStreamWriter(fileOutputStream,"gbk"); //讀寫過程 char[] cbuf = new char[20]; int len; while ((len = inputStreamReader.read(cbuf)) != -1){ outputStreamWriter.write(cbuf,0,len); } } catch (IOException e) { e.printStackTrace(); } finally { //關閉資源 try { if (inputStreamReader != null) inputStreamReader.close(); } catch (IOException e) { e.printStackTrace(); } try { if (outputStreamWriter != null) outputStreamWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } }