字节流和字符流标准格式

  1. 字节流:
    可以处理文字,图片,视频格式。
public static void main(String[] args){
   FileInputStream fis=null;
   FileOutputStream fos=null;
   try {
       fis=new FileInputStream("E:\\000file\\read.txt");
       fos=new FileOutputStream("E:\\000file\\write.txt",true);
       byte[] buff=new byte[1024];
       int len=0;
       while((len=fis.read(buff))!=-1){
           fos.write(buff,0,len);
       }
   }catch(IOException e) {
       e.printStackTrace();
   }finally{ //fis和fos放在finally中,无论上述程序是否发生异常,
       try{
           if(fis != null){
               fis.close();
           }
       }catch (IOException e){
           e.printStackTrace();
       }finally {//为了解决fis发生中断后,fos不能执行的问题
               try {
                   if(fos != null)
                   fos.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
       }
   }
}

2. 字符流
注意:字符流不能拷贝图片,视频,音频,因为信息会丢失。

public static void main(String[] args){
   Reader reader=null;
   Writer writer=null;
   try {
       reader=new FileReader("E:\\000file\\read.txt");
       writer=new FileWriter("E:\\000file\\FileWriter.txt",true);
       char[] chars=new char[1024];
       int len=0;
       while((len=reader.read(chars))!= -1){
           writer.write(chars,0,len);
       }
   } catch (IOException e) {
       e.printStackTrace();
   }finally {
       try {
           if(reader != null) reader.close();
       } catch (IOException e) {
           e.printStackTrace();
       }finally {
           try {
               if(writer != null) writer.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
}
  1. 字符缓冲流
    注意:要明确缓冲的存在是为了增强流的功能,在建立缓冲区对象时,需要先有流对象存在, 使用字符流缓冲区拷贝文件文本。
    原理:就是对数组进行封装。
public static void main(String[] args){
  Reader reader=null;
  Writer writer=null;
  BufferedReader br=null;
  BufferedWriter bw=null;
  try {
      //字符输入输出流
      reader=new FileReader("E:\\000file\\read.txt");
      writer=new FileWriter("E:\\000file\\BufferedWriter.txt",true);

      //字符输入输出缓冲流
      br=new BufferedReader(reader);
      bw=new BufferedWriter(writer);
      String line=null;
      while((line=br.readLine()) != null){
          bw.write(line);//一次写一行
          bw.flush();//刷新缓冲区
          bw.newLine();//readLine没有默认换行
      }
  } catch (IOException e) {
      e.printStackTrace();
  }finally {
      try {
          if(br != null) br.close();
      } catch (IOException e) {
          e.printStackTrace();
      }finally {
          try {
              if(bw != null) bw.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }
}

4. 装饰器模式
问题:每一行添加数字。

public static void main(String[] args){
  Reader reader=null;
   Writer writer=null;
   BufferedReader br=null;
   BufferedWriter bw=null;
   try {
       reader=new FileReader("E:\\000file\\read.txt");
       writer = new FileWriter("E:\\000file\\line.txt", true);
       br = new BufferedReader(reader);
       bw = new BufferedWriter(writer);
       int count=0;
       String line=null;
       while ((line=br.readLine())!= null){
           count++;
           bw.write(count+":"+line);
           bw.flush();
           bw.newLine();
       }
   } catch (IOException e) {
       e.printStackTrace();
   }finally {
       try {
           if(br != null) br.close();
       } catch (IOException e) {
           e.printStackTrace();
       }finally {
           try {
               if(bw != null)
                   bw.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值