字节流与字符流

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:\Study\first\DemoDay31
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 }

 


posted on 2020-03-16 21:59  代码吴彦祖  阅读(173)  评论(0编辑  收藏  举报