zoukankan      html  css  js  c++  java
  • FileInputStram入门

    1、read() 读取一个字节

    @Test
     public void test1() throws Exception{
      //1、指定文件读取路径
      String filePath = "E:\新建文本文档.txt"; //该文档中的内容为 ab cdefg
      
      //2、读取文本
      FileInputStream fis = new FileInputStream(filePath); //读取文本
      int c1 = fis.read();   //以字节方式读取下一个字符 返回该字节的ASCII码
      int c2 = fis.read();
      int c3 = fis.read();
      int c4 = fis.read();
      int c5 = fis.read();
      int c6 = fis.read();
      int c7 = fis.read();
      int c8 = fis.read();
      int c9 = fis.read();   //当读到文件末尾时会返回-1
      
      System.out.println(c1);
      System.out.println(c2);
      System.out.println(c3);
      System.out.println(c4);
      System.out.println(c5);
      System.out.println(c6);
      System.out.println(c7);
      System.out.println(c8);
      System.out.println(c9);
      
      //3、关闭流
      fis.close();
     }

    //优化该方法
    @Test
     public void test1() throws Exception{
      //1、指定文件读取路径
      String filePath = "E:\新建文本文档.txt"; //该文档中的内容为 ab cdefg
      
      //2、读取文本
      FileInputStream fis = new FileInputStream(filePath); //读取文本
      int temp = 0;
      while((temp = fis.read()) != -1){
       System.out.println(temp);
      }
      
      //3、关闭流
      fis.close();
     }

    2、read(byte[])  读取一个字节数组

    @Test
        public void test2() throws Exception{
            
            //1、声明文件路径
            String filePath = "E:\新建文本文档.txt"; //该文档中的内容为 ab cdefg
            
            //2、读取文本
            FileInputStream fis = new FileInputStream(filePath); //读取文本
            byte[] bytes = new byte[3]; //声明一个长度为3的字节数组
            
            int c1 = fis.read(bytes);  //依次读取3个字节,并返回所读取到的字节数
            System.out.println(c1);
            System.out.println(new String(bytes));  //将读取到的字节数组转换成字符串
            
            int c2 = fis.read(bytes);
            System.out.println(c2);
            System.out.println(new String(bytes));
            
            int c3 = fis.read(bytes);  //最后只剩两字节
            System.out.println(c3);
            System.out.println(new String(bytes));
            /**
             * 这一组的输出结果不是预期得到的结果,因为c3=2,但转换成字符串的结果是fge.这里因为在读到最后fg时,fg将上层
             * cde中的cd替换掉了,所以输出的结果是fge。正确的写法应该是
             */
            System.out.println(new String(bytes, 0, c3));
    
            int c4 = fis.read(bytes);  //读取到文本末尾,返回-1 
            System.out.println(c4);
            
            //3、关闭流
            fis.close();
        }
    
    //优化后写法
    @Test
        public void test2() throws Exception{
            //1、声明文件路径
            String filePath = "E:\新建文本文档.txt"; //该文档中的内容为 ab cdefg
            
            //2、读取文本
            FileInputStream fis = new FileInputStream(filePath); //读取文本
            byte[] bytes = new byte[1024]; //声明一个长度为1024的字节数组,即每次读取1K的数据
            int temp = 0;
            while((temp = fis.read(bytes)) != -1){
                System.out.println(new String(bytes, 0 ,temp));
            }
            
            //3、关闭流
            fis.close();
        }

    3、available()方法:返回流中剩余的估计字节数

    @Test
        public void test4() throws Exception{
            //1、声明文件路径
            String filePath = "E:\新建文本文档.txt"; //该文档中的内容为 ab cdefg
            //2、读取文本
            FileInputStream fis = new FileInputStream(filePath); //读取文本
            
            System.out.println(fis.available());  //返回结果为8
            System.out.println(fis.read());       //调用read方法
            System.out.println(fis.available());  //返回结果为7
            
            fis.close();
        }

    4、skip(long n)方法,跳过字节数

    @Test
        public void test5() throws Exception{
            //1、声明文件路径
            String filePath = "E:\新建文本文档.txt"; //该文档中的内容为 ab cdefg
            //2、读取文本
            FileInputStream fis = new FileInputStream(filePath); //读取文本
            
            System.out.println(fis.available());  //返回结果为8
            fis.skip(2);     //跳过两个字节
            System.out.println(fis.available());  // 估计可用字节数为6
            
            fis.close();
        }
  • 相关阅读:
    CPU 上下文切换是什么
    Linux性能优化实战
    JavaScript 概述
    最全前端资源汇总
    zabbix 源码安装
    单例
    php防止sql注入
    python 多进程读写文件
    python twisted异步将数据导入到数据库中
    scrapy-splash常用设置
  • 原文地址:https://www.cnblogs.com/StanLong/p/6920287.html
Copyright © 2011-2022 走看看