• 技术文章 >Java >java教程

    java IO流 之 输入流 InputString()的使用

    高洛峰高洛峰2017-01-11 13:51:05原创1102
    本文主要给大家介绍java的InputStream 流的使用。

    (1)FileInputstream: 子类,读取数据的通道

      使用步骤:

        1.获取目标文件:new File()

        2.建立通道:new FileInputString()

        3.读取数据:read()

        4.释放资源:close()

    //一些默认要导入的包
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    //分别调用方法查看效果
    test1();
    System.out.println("-------------------------------------------");
    test2();
    System.out.println("-------------------------------------------");
    test3();
    System.out.println("-------------------------------------------");
    test4();
    }

    (2)读取数据的三种方式

        1.直接读取 (一次只能一个字节)

    int date = fileInputStream.read();
          char date3 = (char)fileInputStream.read();
    //方式一 直接打印
    public static void test1() throws IOException{
    //(1)获取目标文件路径
    File file = new File("C:\\Users\\joke\\Desktop\\Demo1.java");
    //(2)根据目标文件路径 建立通道: new FileInputStream(file)
    FileInputStream fileInputStream = new FileInputStream(file);
    //(3)读取数据 :read();
    int date = fileInputStream.read();//这里是int类型
    int date2 = fileInputStream.read();//
    char date3 = (char)fileInputStream.read(); //以char类型显示
    System.out.println(date+"\\"+date2+"\\"+date3);
    //(4)释放资源
    fileInputStream.close();
    }

     2.单独使用for循环(效率低)     

    for(int i = 0; i < file.length();i++){
            System.out.print((char)fileInputStream.read());
          }
    //方式二 循环遍历
    public static void test2() throws IOException{
    //通过时间测试效率
    long startTime = System.currentTimeMillis();
    File file = new File("C:\\Users\\joke\\Desktop\\Demo1.java");
    FileInputStream fileInputStream = new FileInputStream(file);
    //for循环
    for(int i = 0; i < file.length();i++){
    System.out.print((char)fileInputStream.read());
    }
    fileInputStream.close();
    long endTime = System.currentTimeMillis();
    System.out.println("读取文件所花时间:"+(endTime-startTime));
    }

    3.Byte[ ] 缓冲区(只能读取指定的字节数不能读取一个完整的文件)   

    byte[] bt = new byte[1024];
          int count = fileInputStream.read(bt);
          System.out.println(new String (bt,0,count));
    //方式三 创建缓冲区(只能读取制定的大小,不能读取一个完整的文件)
    public static void test3() throws IOException{
    File file = new File("C:\\Users\\joke\\Desktop\\Demo1.java");
    FileInputStream fileInputStream = new FileInputStream(file);
    //创建缓冲区,加快读取数据,确定要读取的字节大小
    byte[] bt = new byte[1024];
    //read() 读取字节
    int count = fileInputStream.read(bt);
    System.out.println(count); //显示读取到的字节数
    System.out.println(new String (bt,0,count));//将字节转为字符串显示
    fileInputStream.close();
    }

    4.缓冲区和循环结合。缓冲区一般设置为1024的倍数。理论上设置的缓冲区越大,读取效率越高  

    byte[] bt = new byte[1024];
          int count = 0;
          while((count = fileInputStream.read(bt)) != -1){
            System.out.println(new String (bt,0,count));
          }
    //方式四 循环与缓冲区结合(效率高)
    public static void test4() throws IOException{
    //通过时间测试效率
    long startTime = System.currentTimeMillis();
    File file = new File("C:\\Users\\joke\\Desktop\\Demo1.java");
    FileInputStream fileInputStream = new FileInputStream(file);
    //缓冲区一般设置为1024的倍数。理论上设置的缓冲区越大,读取效率越高
    byte[] bt = new byte[1024];
    int count = 0;
    //read返回 -1 时,证明已经遍历完
    while((count = fileInputStream.read(bt)) != -1){
    //字符串型显示(从bt中的第0个字节开始遍历count个长度)
    System.out.println(new String (bt,0,count));
    }
    fileInputStream.close();
    long endTime = System.currentTimeMillis();
    System.out.println("读取文件所花时间:"+(endTime-startTime));
    }

    在以上,对比第二个和第四个方法,会发现方法四的效率是比较高的,所以推荐使用的四个方法

    在这里我们是直接抛出异常,除了抛出之外我们还可以使用

    try{  }cater{  }finally{  }

    的方式来处理异常

    以上所述是小编给大家介绍的java IO流 之 输入流 InputString()的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHP中文网的支持!

    更多java IO流 之 输入流 InputString()的使用相关文章请关注PHP中文网!

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    上一篇:java IO流 之 输出流 OutputString()的使用 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• Java数据结构之单链表与OJ题• 详细介绍Java正则表达式之单字符匹配和预定义字符• Java总结分享之反射、枚举、Lambda表达式• 一起来分析java设计模式之单例• 实例详解Java顺序表和链表
    1/1

    PHP中文网