zoukankan      html  css  js  c++  java
  • java nio通过ByteBuffer输出文件信息

    1.通过ByteBuffer的get()方法每次读取一个字节转换成char类型输出.

            fc = new FileInputStream("src/demo20/data.txt").getChannel();
            ByteBuffer buff = ByteBuffer.allocate(BSIZE);
            buff = ByteBuffer.allocateDirect(BSIZE);
            fc.read(buff);
            buff.flip();
            while (buff.hasRemaining()) {
                System.out.print((char)buff.get());
            }

    2.使用系统字符集进行解码

    FileChannel fc = new FileOutputStream("src/demo20/data2.txt").getChannel();
            fc.write(ByteBuffer.wrap("Some text".getBytes()));
    buff.rewind();
    String encoding = System.getProperty("file.encoding");//获取系统字符集
    System.out.println("Decoded using "+ encoding + ":" + Charset.forName(encoding).decode(buff));//Decoded using GBK:Some text

    System.getProperty可以获取系统字符集,可以用产生系统字符集的CharSet对象,来进行解码操作.

    3.写入时进行编码

    fc = new FileOutputStream("src/demo20/data2.txt").getChannel();
            fc.write(ByteBuffer.wrap("Some text".getBytes("UTF-16BE")));
            fc.close();
            fc = new FileInputStream("src/demo20/data2.txt").getChannel();
            buff.clear();
            fc.read(buff);
            buff.flip();
            System.out.println(buff.asCharBuffer());

    ByteBuffer.wrap()方法将 ""UTF-16BE"编码的 byte 数组包装到缓冲区中,写入文件,转换成CharBuffer即可读取文件.

    4.通过CharBuffer写入

    fc = new FileOutputStream("src/demo20/data2.txt").getChannel();
            buff = ByteBuffer.allocate(24);
            buff.asCharBuffer().put("Some text");
            fc.write(buff);
            fc.close();
            fc = new FileInputStream("src/demo20/data2.txt").getChannel();
            buff.clear();
            fc.read(buff);
            buff.flip();
            System.out.println(buff.asCharBuffer());

    buff分配了24个字节,能储存12个字符,写入Some text可以通过FileInputStream获取的通道读取.

  • 相关阅读:
    python web 开发中的csrf_token问题及处理方法
    开源编辑器ueditor
    表格中的文字超出长度隐藏,显示省略号
    django前端渲染多对多关系(比如一本书的作者有哪些)
    轻量级分布式 RPC 框架
    大杀器TheFatRat
    WEB扫描器Atscan的安装和使用
    Python类(二)-类的继承
    南京邮电大学网络攻防平台WEB题
    PHP文件操作(三)-文件的写入
  • 原文地址:https://www.cnblogs.com/lishuaiqi/p/10597574.html
Copyright © 2011-2022 走看看