码迷,mamicode.com
首页 > 其他好文 > 详细

IO流随笔

时间:2021-06-02 13:45:35      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:帮助   chm   文件   enc   lis   write   bsp   str   程序   

IO流

在java程序中,数据的输入、输出操作以“流”的方式进行

数据源:data source 提供原始数据的原始媒介。常见的:数据库、文件、其他程序、内存、网络连接、IO设备。

流的分类

流的方向:

  1. 输入流:数据源到程序(InputStream、Reader读进来)

  2. 输出流:程序到目的地(OutputStream、Writer写出去)

处理数据单元:

  1. 字节流:按照字节读取数据(InputStream、OutputStream)

  2. 字符流:按照字符读取数据(Reader、Writer)

功能不同:

  1. 节点流:可以直接从数据源或目的地读写数据。

  2. 处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装。目的主要是简化操作和提高性能。

节点流和处理流的关系:

  1. 节点流处于IO操作的第一线,所有操作必须通过他们进行

  2. 处理流可以对其他流进行处理(提高效率或操作灵活性)

字节流:InputStream 字节输出流的顶级类 OutputStream 字节输出流的顶级类

字符流: Writer 字符输入流的顶级类 Reader 字符输出流的顶级类

复制文件:

/**
* 功能:文件复制
* FileInputStrem   FileOutputStrem
*
* 此法缺点:
* 中转站太小,此法复制大文件时,效率比较低下,
*/
public class TestCopy1 {
?
   public static void main(String[] args) throws IOException {
       //创建一个输入和输入流
  //     File file = new File("d:/BugReport.txt");
       InputStream is = new FileInputStream(new File("d:/BugReport.txt"));
?
       OutputStream os = new FileOutputStream(new File("d:\\BugReport2.txt"));
?
       //使用输入流和输出流完成文件复制
       int n;    //中转站 ,比较小
       //读一个字节
    //   n = is.read(); //从输入流读取一个字节赋值给n
       while ((n= is.read()) != -1){  //没有读完
           //写一个字节
           os.write(n);
           //接着读下一个字节
       //   n = is.read();
      }
       //关闭流
       is.close();
       os.close();
  }
}

此方法缺点:当复制大文件时,复制效率低

改进:

/**
* 功能:提高文件复制效率
* 增加中转站容量
*/
public class TestCopy2 {
?
   public static void main(String[] args) throws IOException {
       //创建一个输入和输出流
       InputStream fis = new FileInputStream("d:/JDK1.6 API帮助文档.CHM");
       OutputStream fos = new FileOutputStream("d:/JDK1.6 API帮助文档2.CHM");
?
       //使用输入流和输出流复制文件
       //设置中转站
       byte[] bytes = new byte[1024];
       //读一次字节
       int len = 0;   //将源文件的内容读取到bytes中,返回真实读取到的字节数
       while ((len=fis.read(bytes)) != -1){   //判断没有读完   -1表示已经读取完毕
           //写一次字节
          // fos.write(bytes);   //写出1024字节流的内容
           fos.write(bytes,0,len);  // 写出0到len字节的内容
      }
       //关闭流
       fis.close();
       fos.close();
  }
}

 

IO流随笔

标签:帮助   chm   文件   enc   lis   write   bsp   str   程序   

原文地址:https://www.cnblogs.com/lrc778/p/14820445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!