第六章,输入和输出处理(一)

高级编程

第六章,输入和输出处理(一)
一,Java I/O(input/output)

文件 | 内存 | 键盘 —> 程序 的过程叫做

程序 —> 文件 | 内存 | 控制台的过程叫做

1.1,文件(File类)
  • 相关记录或放在一起的数据的集合叫做文件

  • 通过Java.io.File类访问文件属性

    /*
    *创建文件对象语法
    *参数内(path name(路径名称))为文件的目录
    *如"c:\\test.txt"或"c:/test.txt"
    *"\"为转义符所以需再转义
    */
    File file = new File(String pathname);
    
  • File类常用的方法

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    注意:相对路径:当前位置继续向下的路径

    ​ 绝对路径:从根目录(如:C:\)向下的路径

    ​ 1汉字字符=2字节

    ​ 1英文字符=1字节

二,流
  • 通过流来读写文件

    • 流是一组有序的数据序列
    • 以先进先出的方式发出信息通道
    • 文件|内存|键盘->程序的过程叫做读
    • 程序 —> 文件 | 内存 | 控制台的过程叫做写
    • 关闭流时按照后创建的先关闭的顺序关闭
  • 流的分类

    • 按流向区分

      • 输出流:OutputStream和Writer作为父类

      • 输入流:InputStream和Reader作为父类

      • 输入输出流是相对于计算机来讲的

    • 按照处理数据单元划分

      • 字节流
        • 字节输入流InputStream作为父类
        • 字节输出流OutputStream作为父类
      • 字符流
        • 字符输入流Reader作为父类
        • 字符输出流Writer作为父类
        • 字节流是八位通用字节流,字符流是十六weiUnicode字符流
2.1,字节输入流

通过父类类型指向子类对象创建

  • InputStream类常用方法

    • int read():从输入流一个字节一个字节的读,返回该字节的整数表示形式,如果到了末位,返回-1

    • int read(byte[] b):从输入流读取若干个字节,把这些字节保存到数组b中,返回的是读取到的字节数,如果到了末位,返回-1

    • int read(byte[] b,int off,int len):从输入流读取若干个字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指的是想读取的字节数,返回的是读取到的字节数,如果到了末位,返回-1

    • void close():关闭流

    • int available():可以从输入流中读取的字节数目

  • 子类FileInputStream常用的构造方法

    • FileInputStream(File file):参数为文件类对象

    • FileInputStream(String name):参数为路径

      //创建父类类型
      InputStream is = null;
          try {
              //创建输入流对象:父类类型指向子类对象
               is = new FileInputStream("C:\\Users\\Administrator\\Desktop\\first.txt");
              //创建byte数组,空间为文件中未读取的字节数
              byte[] b = new byte[is.available()];
              //读取文件,每一个字节保存在byte数组中
              is.read(b);
              //遍历byte数组并打印其中内容,需转换为char输出
              for(byte a : b){
                  System.out.print((char)a);
              }
          }catch (FileNotFoundException e) {
              e.printStackTrace();
          }catch (IOException e) {
              e.printStackTrace();
          }finally{
              try{
                  //关闭流,无论程序是否发生异常都会运行
                  is.close();
              }catch (IOException e) {
                  e.printStackTrace();
              }
          }
      
2.2,字节输出流
  • OutputStream类常用方法

    • void write(int c):写一个字节

    • void write(byte[] buf):写一个字节数组

    • void write(byte[] b,int off,int len):写一个字节数组,从哪里开始写,写多长

    • void close():关闭流

    • void flush():强制把缓冲区的数据写到输出流中

  • 子类FileOutputStream常用的构造方法

    • FileOutputStream(File file):参数为文件类对象

    • FileOutputStream(String name):参数为路径

    • FileOutputStream(String name,boolean append):第一个参数为路径,第二个参数判断是否在源文件的内容上追加内容,true追加,false不追加,默认不追加

      //创建父类类型
      OutputStream os = null;
          try {
              //创建输出流对象:父类类型指向子类对象
              os = new FileOutputStream("C:/Users/Administrator/Desktop/first.txt");
              //要写入的字符串:Hello World
              String str = "Hello World!";
              //将字符串转化为byte字节数组
              byte[] tybes =  str.getBytes();
              //将tybes数组写入路径中的文件
              os.write(tybes);
          } catch (FileNotFoundException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }finally{
              try {
                  //清空缓冲区
                  os.flush();
                  //关闭流
                  os.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      
  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值