zoukankan      html  css  js  c++  java
  • 字节流与字符流

    1: 字节流 ; 一般情况下用来处理二进制(非文档的内容)

      1: FileInputStream

     1 package com.lv.study.am.first;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileNotFoundException;
     6 import java.io.IOException;
     7 
     8 public class TestFileInputStream {
     9 
    10     public static void main(String[] args) {
    11 
    12         //File  文件或者目录对象
    13         //FileInputStream  操作文件的流对象
    14         
    15         //读取摸个文件里面的内容
    16         //1:得到这个文件的对象
    17         //2:使用流对象去读取这个文件
    18         
    19         //拼接我们的文件路径D:StudyfirstDemoDay31
    20         String path="D:"+File.separator+"Study"+File.separator+"first"+File.separator+"DemoDay31"+File.separator+"test.txt";
    21         
    22         FileInputStream fis=null;
    23         
    24         
    25         try {
    26             File file=new File(path);
    27             fis=new FileInputStream(file);
    28             
    29             //一次只会读取一个字节,中文是两个字节
    30             int result;
    31             while((result=fis.read())!=-1){
    32                 //字节流去处理中文的时候会出现问题
    33                 System.out.println((char)result);
    34             }
    35             
    36         } catch (Exception e) {
    37             //可以直接捕获处理我们的Exception
    38             //某些情况下,你需要针对不同的异常做不同的操作,就要一个一个去捕获
    39             e.printStackTrace();
    40         }finally{//我们需要关闭流
    41             
    42             if(null!=fis){//先判断是不是为空
    43                 try {
    44                     fis.close();
    45                     //我们在关闭流的时候也可能会出现异常
    46                 } catch (IOException e) {
    47                     e.printStackTrace();
    48                 }
    49             }
    50             
    51         }
    52         
    53     }
    54 
    55 }

      2:FileOutputStream(file,true) false默认理解为新建一个文件 true 在当前文件末尾进行添加

     1 package com.lv.study.am.first;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileNotFoundException;
     6 import java.io.FileOutputStream;
     7 import java.io.IOException;
     8 
     9 public class TestFileOutputStream {
    10 
    11     public static void main(String[] args) {
    12 
    13         // 1:首先构建一个File对象
    14         // 2:构建一个流对象来操作这个File对象
    15         String path = "D:" + File.separator + "Study" + File.separator + "first" + File.separator + "DemoDay31"
    16                 + File.separator + "test.txt";
    17 
    18         // 我们的jdk帮我们new File对象
    19         FileOutputStream fos = null;
    20 
    21         try {
    22             fos = new FileOutputStream(path);//如果文件不存在会创建一个文件
    23             
    24             String ms="今天要下雨";
    25             byte[]bytes=ms.getBytes();//将我们的字符串转成一个字节数组
    26             
    27             fos.write(bytes);
    28             
    29             
    30         } catch (Exception e) {
    31             e.printStackTrace();
    32         } finally {
    33             if (null != fos) {
    34                 try {
    35                     fos.close();
    36                 } catch (IOException e) {
    37                     // TODO Auto-generated catch block
    38                     e.printStackTrace();
    39                 }
    40             }
    41         }
    42 
    43     }
    44 
    45 }

      3:BufferedInputStream与BufferedOutputStream

     1 package com.lv.study.pm.first;
     2 
     3 import java.io.BufferedInputStream;
     4 import java.io.BufferedOutputStream;
     5 import java.io.File;
     6 import java.io.FileInputStream;
     7 import java.io.FileOutputStream;
     8 
     9 import com.lv.study.am.IOUtil;
    10 
    11 public class DemoBufferedInputOutput {
    12 
    13     public static void main(String[] args) {
    14 
    15         //读写一个视频资源
    16         String path="D:"+File.separator+"test.mp4";
    17         String resultPath="D:"+File.separator+"study"+File.separator+"abc.mp4";
    18         
    19         BufferedInputStream fis=null;
    20         BufferedOutputStream fos=null;
    21         
    22         try {
    23             
    24             //记录开始拷贝的时间
    25             long start=System.currentTimeMillis();
    26             //真正做io操作的还是FileInputStream对象,但是BufferedInputStream包装了一下
    27             fis=new BufferedInputStream(new FileInputStream(path));
    28             fos=new BufferedOutputStream(new FileOutputStream(resultPath));
    29             
    30             int result;
    31             while((result=fis.read())!=-1){
    32                 fos.write(result);
    33             }
    34             //记录结束拷贝的时间
    35             long stop=System.currentTimeMillis();
    36             
    37 //            fos.flush();//清空我们的缓冲区并且将缓冲区里面的内容写入到磁盘里面
    38 //            fos.close();//关闭缓冲流,关闭之前,会先清空缓冲区,之前会先入
    39             System.out.println("拷贝成功,花费的时间"+(stop-start));
    40             
    41         } catch (Exception e) {
    42             e.printStackTrace();
    43         }finally {
    44             IOUtil.closeIO(fis, fos);
    45         }
    46     }
    47 
    48 }

      4:InputStreamReader

      InputStreamReader是从字节流到字符流的桥接器:它读取字节并使用指定的字符将它们解码为字符charset
     5:OutputStreamWriter
      OutputStreamWriter是从字符流到字节流的桥接  



    2: 字符流(文档类型的内容)

      1:FileReader与FileWriter

      2:BufferedReader与BufferedWriter

     1 package com.lv.study.pm.second;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.BufferedWriter;
     5 import java.io.File;
     6 import java.io.FileNotFoundException;
     7 import java.io.FileReader;
     8 import java.io.FileWriter;
     9 
    10 public class TestBufferedReaderWrite {
    11 
    12     public static void main(String[] args) {
    13 
    14         String path = "D:" + File.separator + "Study" + File.separator + "A.txt";
    15         String resultPath = "D:" + File.separator + "Study" + File.separator + "B.txt";
    16 
    17         try {
    18             BufferedReader br = new BufferedReader(new FileReader(path));
    19             BufferedWriter bw = new BufferedWriter(new FileWriter(resultPath, true));
    20 
    21             // //直接读取文档一行
    22             // String readLine =br.readLine();
    23             //
    24             // //换行
    25             // bw.newLine();
    26             // bw.write(readLine);
    27 
    28             // //多行
    29             // String readLine;
    30             // while((readLine=br.readLine()).length()>0){
    31             // //换行
    32             // bw.newLine();
    33             // bw.write(readLine);
    34             // }
    35             //
    36 
    37             /*
    38              * aaaa
    39              * 
    40              * bbbbbb
    41              */
    42             //有空格的
    43             int result;
    44             while ((result = br.read()) != -1) {
    45                 bw.write(result);
    46             }
    47 
    48             bw.close();
    49             br.close();
    50 
    51         } catch (Exception e) {
    52             e.printStackTrace();
    53         }
    54 
    55     }
    56 
    57 }

  • 相关阅读:
    毕业3年在北京买房,他是怎么赚钱攒钱的?
    Windows Server 2008 如何在IIS中添加MIME类型
    IIS下无法访问.ini后缀文件
    新的一年,我们如何才能收获满满,不留太多遗憾呢?
    你百分之九十九的问题都是因为懒
    为什么你容许陌生人成功,却无法忍受身边人发达
    堆排序
    计数排序
    直接插入排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/dabu/p/12507174.html
Copyright © 2011-2022 走看看