Java IO流

File Api

语句作用

1.IO流(输入流、输出流)

  • 字节流、字符流

    • 1.字节流
      InputStream、OutputStream
      • InputStream抽象了应用程序读取数据的方式
      • OutputStream抽象了应用程序写入数据的方式
    • 2.EOF
      EOF = End 读到-1就读到结尾
    • 3.输入流的基本方法

      int b = in.read();//读取一个字节无符号填充到int低八位.-1是EOF
      in.read(byte[] buf);
      in.read(byte[] buf,int start,int size);
    • 4.输出流基本方法

      out.write(int b);//写入一个byte到流,b的低8位
      out.write(byte[] buf)将buf字节数组都写入到流
      out.write(byte[] buf,int start,int size);
    • 5.FileInputStream&FileOutputStream

      • 文件流的输入流与输出流
        if (!srcFile.exists())
            throw new IllegalAccessException("文件"+srcFile+"不存在");
        if (!srcFile.isFile())
            throw new IllegalAccessException(srcFile+"不是文件");
        FileInputStream fis = new FileInputStream(srcFile);
        FileOutputStream fos = new FileOutputStream(destFile,true);//如果文件,则追加在文件内容后面
        int b ;
        byte[] buf = new byte[8*1024];
        while ((b = fis.read(buf))!=-1){
            fos.write(buf,0,b);
            fos.flush();
        }
        fis.close();
        fos.close();
    • **6.DataOutputStream/DataInputStream
      • 对”流”功能的扩展,可以更加方便的读取int.long,字符等类型数据
      • DataOutputStream writeInt()/writeDouble()/writeUTF();
    • **7.BufferedInputStream&BufferedOutputStream
      • 这两个流类位IO提供了带缓冲区的操作,一般打开文件进行写入或去读操作时。都会加入缓冲,这种流模式提高了IO的性能 .(注意,bos.flush() )
  • 2.字符流

    • 字符的处理,一次处理一个字符
    • 字符的底层任然是基本的字节序列
    • 字符流的基本实现
    • 1.InputStreamReader 完成byte流解析为char流,按照编码解析
    • 2.OutputStreamWriter提高char流到byte流,按照编码处理
    • 3.FileReader&FileWriter
    • 4.BufferedReader&BufferedWriter

      • 一次读一行ReadLine&一次写一行
      public static void copyFileRW(String srcFile,String destFile)throws Exception{
      BufferedWriter bw = new BufferedWriter(
              new OutputStreamWriter(
                      new FileOutputStream(destFile)
              )
      );
      BufferedReader br = new BufferedReader(
              new InputStreamReader(
                      new FileInputStream(srcFile)
              )
      );
      String line ;
      while ((line = br.readLine())!=null){
          bw.write(line);
          bw.newLine();//换行
          bw.flush();//刷新
      }
      br.close();
      bw.close();
      }
  • 对象的序列化、反序列化

    • 对象序列是将Object转换成byte序列,反之叫反序列化
    • 序列化流(ObjectOutputStream),是过滤—writeObject,反序列化流(ObjectInputStream)—readObject
    • 序列化接口必须实现(Serializable) 对象必须进行序列化,否则会出现异常
  public static void ObjectFile(String srcfile,String destfile) throws Exception{
        ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream(srcfile));
        Student student = new Student(1001,"家伙",20);
        oos.writeObject(student);
        oos.flush();
        oos.close();

        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(destfile));
        Student stu = (Student) ois.readObject();
        ois.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值