java IO流 之 输入流 InputString()

学习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;
 1     public static void main(String[] args) throws IOException {
 2         // TODO Auto-generated method stub
 3
 4         //分别调用方法查看效果
 5         test1();
 6         System.out.println("-------------------------------------------");
 7         test2();
 8         System.out.println("-------------------------------------------");
 9         test3();
10         System.out.println("-------------------------------------------");
11         test4();
12     }    

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

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

      int date = fileInputStream.read();

      char date3 = (char)fileInputStream.read();

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

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

      for(int i = 0; i < file.length();i++){

        System.out.print((char)fileInputStream.read());

      }

 1 //方式二    循环遍历
 2     public static void test2() throws IOException{
 3
 4         //通过时间测试效率
 5         long startTime = System.currentTimeMillis();
 6
 7         File file = new File("C:\\Users\\joke\\Desktop\\Demo1.java");
 8         FileInputStream fileInputStream = new FileInputStream(file);
 9
10         //for循环
11         for(int i = 0; i < file.length();i++){
12             System.out.print((char)fileInputStream.read());
13         }
14
15         fileInputStream.close();
16
17         long endTime = System.currentTimeMillis();
18         System.out.println("读取文件所花时间:"+(endTime-startTime));
19     }

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

      byte[] bt = new byte[1024];

      int count = fileInputStream.read(bt);

      System.out.println(new String (bt,0,count));

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

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

      byte[] bt = new byte[1024];

      int count = 0;

      while((count = fileInputStream.read(bt)) != -1){

        System.out.println(new String (bt,0,count));

      }

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

陌陌说:

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

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

    try{  }cater{  }finally{  }

  的方式来处理异常

时间: 2024-10-10 15:13:11

java IO流 之 输入流 InputString()的相关文章

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流

Java—IO流 字节流

IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络-),即是将数据源读入到程序的通信通道. 输出流:程序向输出流写入数据.将程序中的数据输出到外界(显示器.打印机.文件.网络-)的通信通道. 字节流 1.InputStream.OutputStream InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据的方式 2.读到文件结尾,称为EO

Java IO流学习总结

Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表. 字节流和字符流的区

Java IO流学习总结(转)

原文地址:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.   IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符

Java学习笔记-7.Java IO流

一.输入/输出流 1.流:不同类型的输入.输出源    数据流:输入或输出的数据 Java数据流的所有接口和类都是在java.io包中定义的,因此应在程序开头加入 import java.io.* 2.流的分类: (1)从流的流动方向来看,可以将IO流分为输入流和输出流 输入流:数据信息从某个地方流向程序中 输出流:数据信息从程序中发送到某个目的地 (2)从流的数据处理单位来看,可以将IO流分为字节流和字符流 字节流:以字节方式处理的二进制数据 字符流:以字符方式处理的数据流(Java使用Uni

Java IO流详尽解析(转自 http://www.2cto.com/kf/201312/262036.html)

流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表.字节流和字符流的区别

文件传输基础——Java IO流

第一章 文件的编码 package com.imooc.io; public class EncodeDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String s="欢迎你ABC"; byte[] byte1=s.getBytes(); for (byte b : byte1) { //把字节转换成16进制的方式显示 Sys

黑马程序员-Java IO流

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!-- 一.概述 Java中与IO相关的类有很多,都集中在java.io中,都是以流的形式操作的,流是有一定的顺序,像一个管道一样,它的本质是传输数据.根据数据类型的不同可以分为字节流和字符流,根据流向的不同可以分为输入流和输出流. 字符流:因为数据有不同的编码,可以对字符进行不同的操作,其本质还是基于字节流,然后再查询相应的码表.一般用于处理纯文本数据. 字节流:可以处理所有类型数据,二进制文件(图片,音频等). 输入

java IO流文件的读写具体实例(转载)

引言: 关于java IO流的操作是非常常见的,基本上每个项目都会用到,每次遇到都是去网上找一找就行了,屡试不爽.上次突然一个同事问了我java文件的读取,我一下子就懵了第一反应就是去网上找,虽然也能找到,但自己总感觉不是很踏实,所以今天就抽空看了看java IO流的一些操作,感觉还是很有收获的,顺便总结些资料,方便以后进一步的学习... IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流