<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數據加載中……

    Java I/O中的數據編碼轉換

    作者:Flyingis

          JDK1.4
    開始便引入了java.nio.*包,其目的在于提高I/O的速度,這是因為該類庫使用的結構更接近于操作系統執行I/O的方式,即通過通道和緩沖器來讀寫數據。在實際應用中,和我們直接交互的是緩沖器,然后把緩沖器派送到通道,通道要么從緩沖器獲得數據,要么向緩沖器發送數據。


        在基于
    Java的各種開發中,字符編碼是常見的問題之一,在最基本的Java I/O中也存在這種問題。新的Java I/O通過通道和緩沖器來讀寫數據,緩沖器容納的是普通的字節,為了把它們轉換成字符,我們要么在輸入的時候對其進行編碼,要么在從緩沖器輸出時對它們進行解碼。


    import java.io.*;

    import java.nio.*;

    import java.nio.channels.*;

    import java.nio.charset.*;

    public class ByteToCharacter {

      private static final int SIZE = 1024;

      public static void main(String[] args) throws Exception {

    FileChannel fc = new FileOutputStream(“Output.txt”).getChannel();

    ByteBuffer buffer = ByteBuffer.allocate(SIZE);

    /**

    * 在輸入的時候進行編碼方式一

    */

    fc.write(ByteBuffer.wrap(“Good holiday!”.getBytes(“UTF-16BE”)));  // UTF-16BE可以更換為其他編碼方式

    fc.close();

    fc = new FileInputStream(“Output.txt”).getChannel();

    fc.read(buffer);

    buffer.flip();  //準備從緩沖區讀取已經寫入的數據

    System.out.println(buffer.asCharBuffer());

    /**

    * 在輸入的時候進行編碼方式二

    * 通過asCharBuffer()方法直接以char形式將字符寫入

    */

    fc = new FileOutputStream(“Output.txt”).getChannel();

    buffer.clear();

    buffer.asCharBuffer.put(“Good holiday has passed!”);

    fc.write(buffer);

    fc.close();

    fc = new FileInputStream(“Output.txt”).getChannel();

    buffer.clear();

    fc.read(buffer);

    buffer.flip();

    System.out.println(buffer.asCharBuffer());

    /**

    * 從緩沖器輸出時進行編碼

    */

    fc = new FileOutputStream(“Output.txt”).getChannel();

    fc.write(ByteBuffer.wrap(“Once again!”.getBytes()));

    fc.close();

    fc = new FileInputStream(“Output.txt”).getChannel();

    buffer.clear();

    fc.read(buffer);

    buffer.flip();

    String encode = System.getProperty(“file.encoding”);  // 平臺缺省字符集,更加通用的方法,跨平臺特性的體現之一

    System.out.println(Charset.forName(encode).decode(buffer));

    }

    }


       
    在上述代碼中,如果不對從緩沖器寫入的數據進行正確編碼,那么當再次通過緩沖器讀取這些數據時,將不能顯示任何所需要的數據。


        JDK
    中的java.nio.charset.Charset類提供了把數據編碼成多種不同類型的字符集的工具,滿足在各種應用中的編碼需求。

    posted on 2006-01-03 14:02 Flyingis 閱讀(1436) 評論(0)  編輯  收藏 所屬分類: JavaSE

    主站蜘蛛池模板: 中文字幕影片免费在线观看| 国产又黄又爽胸又大免费视频 | 一级特黄色毛片免费看| 四虎成人免费大片在线| 在线观看亚洲AV日韩AV| 日本免费人成视频播放| 国产精品亚洲专区无码WEB| 国产美女无遮挡免费视频网站| 亚洲精品宾馆在线精品酒店| 韩国欧洲一级毛片免费| 国产精品无码亚洲精品2021| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | a级毛片免费在线观看| 亚洲日韩一页精品发布| 男女拍拍拍免费视频网站| 国产∨亚洲V天堂无码久久久| 免费毛片a线观看| 亚洲成a人片在线观看中文!!!| 三年片在线观看免费大全 | 美女视频黄a视频全免费网站色| 免费国产美女爽到喷出水来视频| 免费的黄色网页在线免费观看| 亚洲综合色区在线观看| 久久免费美女视频| 亚洲免费视频播放| 国产视频精品免费| 十八禁在线观看视频播放免费| 亚洲午夜在线电影| 日韩激情无码免费毛片| 亚洲精品偷拍视频免费观看| 亚洲第一精品福利| 四虎免费在线观看| 91免费在线视频| 日本亚洲精品色婷婷在线影院| 男人的天堂亚洲一区二区三区 | 一区二区三区免费精品视频| 亚洲精品无码永久中文字幕| 国产免费久久精品99re丫y| 成年免费a级毛片| 亚洲精品高清国产麻豆专区| 国产免费观看网站|