java 基础知识之IO流 其二(基本使用)

xiaoxiao2021-02-28  44

基本使用


下面我就根据代码,讲讲流的使用方式和组装

1. 使用输入流读取一个文件的原始写法

try{ File file = new File("dsds.dat"); //备注 :这样的路径是项目文件夹下的根目录 //将文件读入到流中 FileInputStream fis = new FileInputStream(file); //将文件流加修饰,变成能只读取特定数据的流 InputStreamReader isr= new InputStreamReader(fis); //读取整型 isr.read(); } catch (FileNotFoundException fne) { e.printStackTrace(); } catch (IOException ioe) { e.printStackTrace(); }finally{ try{ //关闭流 dis.close(); fis.close(); file.close(); }catch(Exception e){ e.printStackTrace(); } }

感受到装饰者带来的好处了吧。没错,这样可以灵活组合,让我们使用不同方式通讯


2. 当然上面的代码是繁杂,每次使用流都要关闭,下面代码实现三个目的 1) 优化代码 2)使用 jse 7 新的特性 try-with-resources语句,取消掉流关闭的代码 3)统计下读取出多少的字节

int count=0; //try-with-resources语句 //try的构造实例,流会在退出try 前关闭 ,当然是按一次操作而言 try(InputStreamReader isr=new InputStreamReader ( new FileInputStream( new File("emplyes.dat")))){ //统计拿到多少的字节并打印到控制台 while(isr.read()!=-1) count++; System.out.println(count); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }

这样的代码就清爽多了

等等,好像忘了什么东西


3. 让我们将输入流和输出流结合起来使用 将一个文件的内容输出到另一个文件

//缓冲,后面讲解 byte [] buf = new byte[1024]; //用于存放所读取字节的长度 int len = 0; //这里 对于多个资源的创建要使用 ; 作为分隔符 //首先是建立两条通道 文件1 -通道fis- 程序 -通道fos- 文件2 try(FileInputStream fis = new FileInputStream(new le("emplyes.dat")) ; FileOutputStream fos = new FileOutputStream(new File("emplyes2.dat"))) { //读取操作 while((len = fis.read(buf))!=-1){ //write 方法(一次读取的字节数,从那个位子开始,在哪个位置结束) fos.write(buf,0,len); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }

这样一个简单的输入输出流就构建好了。

转载请注明原文地址: https://www.6miu.com/read-80503.html

最新回复(0)