zoukankan      html  css  js  c++  java
  • Java中的IO流总结

    Java中的IO流总结

    1. 流的继承关系,以及字节流和字符流。 
    2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和BufferedOutputStream。以及对应的FileOutputWriter,FileInputReader,BufferedInputReader,BufferedOutputWriter。 
    3. 转换流InputStreamReader和OutputStreamWriter

    一:流的继承关系

    字节流 

    字符流

    字符流和字节流的使用范围:字节流一般用来处理图像,视频,以及PPT,Word类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,字节流可以用来处理纯文本文件,但是字符流不能用于处理图像视频等非文本类型的文件。

    二:处理流BufferedReader,BufferedWriter,BufferedInputStream,BufferedOutputsStream,都要包上一层节点流。也就是说处理流是在节点流的基础之上进行的,带有Buffered的流又称为缓冲流,缓冲流处理文件的输入输出的速度是最快的。所以一般缓冲流的使用比较多。 

    下面是两个简单的文件复制的实例:

     1 public class MycopyTest {
     2     public static void main(String[] args) {
     3         File src = new File("D:/1.jpg");
     4         // D:/1.jpg必须的存在不然会报错
     5         File dest = new File("D:/2.jpg");
     6         // 如果D:/2.jpg存在则覆盖,如果不存在则新建
     7         streamCopy(src, dest);
     8     }
     9 private static void readCopy(File src,File dest)
    10     {
    11         FileReader fr=null;
    12         FileWriter fw=null;
    13         BufferedReader br=null;
    14         BufferedWriter bw=null;
    15         try {
    16             fr=new FileReader(src);
    17             fw=new FileWriter(dest);
    18             br=new BufferedReader(fr);
    19             bw=new BufferedWriter(fw);
    20             String str;
    21             while((str=br.readLine())!=null)
    22             {
    23                 bw.write(str);
    24                 bw.newLine();
    25             }
    26         }catch (IOException e) {
    27             // TODO Auto-generated catch block
    28             e.printStackTrace();
    29         }
    30         try {
    31             bw.close();
    32             br.close();
    33         } catch (IOException e) {
    34             // TODO Auto-generated catch block
    35             e.printStackTrace();
    36         }
    37 
    38     }
    39     private static void streamCopy(File src, File dest) {
    40         FileInputStream fis = null;
    41         FileOutputStream fos = null;
    42         BufferedInputStream bis = null;
    43         BufferedOutputStream bos = null;
    44         try {
    45             fis = new FileInputStream(src);
    46             fos = new FileOutputStream(dest);
    47             bis = new BufferedInputStream(fis);
    48             bos = new BufferedOutputStream(fos);
    49             int len;
    50             byte[] b = new byte[1024];
    51             while ((len = bis.read(b)) != -1) {
    52                 bos.write(b, 0, len);
    53                 // bos.write(b,0,len);是把读到数组的大小字节写入
    54                 // bos.write(b);最后一次如果数组未写满的话就会多读。
    55             }
    56         } catch (IOException e) {
    57             // TODO Auto-generated catch block
    58             e.printStackTrace();
    59         }
    60         try {
    61             bos.close();
    62             bis.close();
    63         } catch (Exception e) {
    64             // TODO Auto-generated catch block
    65             e.printStackTrace();
    66         }
    67     }
    68 }

    三:转换流InputStreamReader和OutputStreamWriter

     

    转换流的作用,文本文件在硬盘中以字节流的形式存储时,通过InputStreamReader读取后转化为字符流给程序处理,程序处理的字符流通过OutputStreamWriter转换为字节流保存。

     1 public class InputStreamWriterTest {
     2     public static void main(String[] args) {
     3         File src = new File("D:/Files/狗屁.txt");
     4         File dest = new File("D:/Files/斯密斯.txt");
     5         BufferedWriter bw = null;
     6         BufferedReader br = null;
     7         FileInputStream fis = null;
     8         FileOutputStream fos = null;
     9         try {
    10             fis = new FileInputStream(src);
    11             fos = new FileOutputStream(dest);
    12             InputStreamReader ir = new InputStreamReader(fis, "GBK");
    13             OutputStreamWriter ow = new OutputStreamWriter(fos, "GBK");
    14             bw = new BufferedWriter(ow);
    15             br = new BufferedReader(ir);
    16             String str;
    17             while ((str = br.readLine()) != null) {
    18                 bw.write(str);
    19                 bw.newLine();
    20                 bw.flush();
    21             }
    22         } catch (IOException e) {
    23             e.printStackTrace();
    24         }
    25         try {
    26             bw.close();
    27             br.close();
    28         } catch (IOException e) {
    29             e.printStackTrace();
    30         }
    31     }
    32 }
  • 相关阅读:
    logging日志模块
    mysql数据库--explain(查询表是否走索引)各个字段含义
    函数的命名空间、作用域、闭包函数
    模块
    Hibernate Stack Overflow
    PostgreSQL ----- No relations found.
    spring杂记
    JUnit test case 执行顺序
    转换成maven时报错
    参考网页
  • 原文地址:https://www.cnblogs.com/joyco773/p/7966320.html
Copyright © 2011-2022 走看看