javase的IO流

IO数据流的介绍及模板

1. IO流的介绍

IO流用来处理设备之间的数据传输,上传文件和下载文件,Java对数据的操作是通过流的方式。

2. Io流的分类

    按照数据流向:
               输入流 : 读入数据  
               输出流 : 写出数据
    按照数据类型:
              字节流(一般情况使用字节流) 
              字符流(用于文本)

3. IO流的使用情况

   什么情况下使用哪种流呢?
      如果数据所在的文件通过windows自带的记事本打开并能读懂里面的内容,就用字符流。其他用字节流。
      如果你什么都不知道,就用字节流,一般情况使用字节流。

重点内容

4. 各种流的使用情况及详细代码块

字节输出流
 //字节普通输出流的介绍  **FileOutputStream**
//案列:把一段字符串写入到 F:/test/test.txt 中
public static void main(String[] args) {
        //将字符串转换成字节数组
        byte[] bytes = "今天下雨了,心情很好!可以不用出去了!".getBytes();
        /*
        这是jdk1.7新特性 把输出流定义到try的()里面。最后当流调用完以后jvm会自动关闭流。
        怎样可以避免写完代码后忘记关闭流,造成资源的浪费。true代表继续在F:/test/test.txt
        中的文本末尾继续写。
        */
        try (FileOutputStream fos = new FileOutputStream("F:/test/test.txt",true))
            {
            //调用 write方法 将字符串转换成的字节数组写到目标文本中
             fos.write(bytes);
            } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }

字节输入流
 //字节输入流 ,将内容读取,并打印出来
 //这次代码用老式的关流方法
 // 刚才我们把字符串写到了F:/test/test.txt中现在我们要从该文本中读取内容,并在Java控制台输出
public static void main(String[] args) throws Exception {
//先让输入流指向空,目的是为了避免代码执行到一半时发生错误时,可以通过判断来使流关闭。
        FileInputStream fis = null;
        try {
        //输入流跟 F:/test/test.txt 打开通道
            fis = new FileInputStream("F:/test/test.txt");
            //定义一个字节数组缓冲区
             byte [] bytes=new byte [1024];
             //把数据读入字节数组中,
             int len = fis.read(bytes);
             //将读取到的数据转换字符串
             String s = new String(bytes,0,len);
             //打印出来
             System.out.println(s);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            try {
                if(fis!=null) {
                //必须要关闭流
                    fis.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
普通字节流的综合使用案例
//.txt文档的复制案列
/*
srcPath: 要复制的文档
destPath:复制到的位置
*/
public static  void copy(String srcPath, String destPath) {
//新特性,流调用完后自动关闭
        try (FileInputStream fis = new FileInputStream(srcPath);
                FileOutputStream fos = new FileOutputStream(destPath);) {

            byte[] bytes = new byte[1024];//字节数组缓冲区

            int len ;//为了判断数据是否读取完
            //当len的长度等于-1时代表数据读取完了
            while ((len = fis.read(bytes)) != -1) {
            //读一个写一个
                fos.write(bytes, 0, len);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值