首页 > 编程 > Java > 正文

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

2019-11-26 13:29:00
字体:
来源:转载
供稿:网友

本文主要给大家介绍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()的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表