zoukankan      html  css  js  c++  java
  • 从内存输入

    1.从内存输入

    package com.zachary.io;
    
    import java.io.IOException;
    import java.io.StringReader;
    
    /**
     * 从内存输入
     * @author Zachary.Zheng
     * @version 1.0
     * @date 2019年11月10日
     */
    public class MemoryInput {
        /**
         * BufferedInputFile.read()读入的String结果被用来创建一个StringReader
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
            StringReader in = new StringReader(BufferedInputFile.read("src/com/zachary/io/MemoryInput.java"));
            int c;
            while ((c = in.read()) != -1) {
                // read()是以int形式返回下一个字节, 因此必须转型为char才能正确打印.
                System.out.println((char)c);
            }
        }
    }

    2.格式化的内存输入,谨慎使用

    package com.zachary.io;
    
    import java.io.ByteArrayInputStream;
    import java.io.DataInputStream;
    import java.io.IOException;
    
    /**
     * 格式化的内存输入
     * 谨慎使用
     * @author Zachary.Zheng
     * @version 1.0
     * @date 2019年11月10日
     */
    public class FormattedMemoryInput {
        /**
         * 要读取格式化数据, 可以使用DataInputStream, 它是一个面向字节的I/O类(不是面向字符-中文乱码)
         * 1. 编码为'GBK'和'UTF-8'都没有效果
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            DataInputStream in = new DataInputStream(
                    new ByteArrayInputStream(
                            BufferedInputFile.read("src/com/zachary/io/FormattedMemoryInput.java").getBytes("GBK")
                            )
                    );
            try {
                while(true) {
                    System.out.println((char)in.readByte());
                }
            } catch (Exception e) {
                // 可以捕获异常来检测输入的末尾. 但这是对异常错误的使用
                System.out.println("End of stream");
            }
            
            in = new DataInputStream(
                    new ByteArrayInputStream(
                            BufferedInputFile.read("src/com/zachary/io/FormattedMemoryInput.java").getBytes("UTF-8")
                            )
                    );
            /*
             * available() 方法查看还有多少可供存取的字符
             * 1. 字面意思"在没有阻塞的情况下所能读取的字节数"
             * 2. 工作方式会根据所读的媒介类型的不同而有所不同
             * 3. 对与文件, 这意味这整个文件
             * 4. 但对于不同类型的流可能不是这样的, 因此要谨慎使用
             */
            while(in.available() != 0) {
                System.out.println((char)in.readByte());
            }
        }
    }
  • 相关阅读:
    Django基础六之ORM中的锁和事务
    Django学习之model进阶
    Django基础八之cookie和session
    Django基础五之django模型层(二)多表操作
    Django基础五之django模型层(一)单表操作
    Django基础四之模板系统
    webpack最佳入门实践系列(4)
    webpack最佳入门实践系列(3)
    webpack最佳入门实践系列(2)
    webpack最佳入门实践系列(1)
  • 原文地址:https://www.cnblogs.com/zhongli1/p/11832039.html
Copyright © 2011-2022 走看看