java 基础知识之I/O流 其二(基本使用)

基本使用


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

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();
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值