zoukankan      html  css  js  c++  java
  • FileInputStream 原理总结 把文件作为字节流进行读操作

    package io;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class IOUtil {
    
        
    /**
     * 读取指定文件内容,按照16进制输出到控制台,为什么要按十六进制?
     * 并且每输出10个byte换行
     * @throws IOException 
     */
        public static void printHex(String filename) throws IOException{
            //把文件作为字节流进行读操作
            FileInputStream in = new FileInputStream(filename);//FileInputStream具体实现了在文件上读取数据
          int b;
          int i=1;
          while((b=in.read())!=-1)//b=in.read()这就是程序核心
          {
              System.out.println(Integer.toHexString(b)+"  ");//将整型b转换成16进制表示的字符串?输出
              if(i++%10==0)
              {
                  System.out.println();//每隔十个字节换行
              }
          }
        in.close();
        }
    
    }

    思想就是:利用new FileInputStream(filename)把一个文件放入到一个输入流对象in中,调用in.read()方法来逐个字节读取(下面read源码),读取输入流一个字节的数据,返回一个整型int(那么是不是十六进制的整型呢?)。

    再调用Integer.toHexString(b)方法将存在b的为int的一个字节的数据转换成一个字符串,然后输出。

    总体原理就是,将一篇字符串 放入流进行单个字节的整型读取,然后再转换回字符串单个输出。

        /**
         * Reads a byte of data from this input stream. This method blocks
         * if no input is yet available.
         *
         * @return     the next byte of data, or <code>-1</code> if the end of the
         *             file is reached.
         * @exception  IOException  if an I/O error occurs.
         */
        public int read() throws IOException {
            return read0();
        }
    
        private native int read0() throws IOException;

    //把文件作为字节流进行读操作
    FileInputStream in = new FileInputStream(filename);//FileInputStream具体实现了在文件上读取数据

  • 相关阅读:
    easyui属性表格的一点小总结
    我是程序员:国庆带女朋友回家见父母
    我睁着朦胧呆滞的双眼立在初秋的夜里
    iframe父子兄弟之间调用传值(contentWindow && parent)
    向前兼容和向后兼容的含义
    char 与 String 相等比较
    2012国庆12天的长假
    JavaScript遍历XML总结
    Spring3.x企业应用开发实战Spring+Hibernat架构分析
    w3school上系统过了一遍Jquery的总结
  • 原文地址:https://www.cnblogs.com/xuedexin/p/5639329.html
Copyright © 2011-2022 走看看