IT星球论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 123|回复: 0

Java回顾之I/O

[复制链接]

1997

主题

1

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

优秀会员 助人为乐 辛勤工作 技术精英 多才多艺 优秀班竹 灌水天才 星球管理 宣传大使 灌水之王 财富勋章 版主勋章 动漫勋章 勤奋会员 论坛精英 PS高手 心 8 闪游皮肤 双鱼座 8★8➹ 志愿者 乖

发表于 2017-4-11 18:25:33 |显示全部楼层
Java回顾之I/O

 我计划在接下来的几篇文章中快速回顾一下Java,主要是一些基础的JDK相关的内容。

  工作后,使用的技术随着项目的变化而变化,时而C#,时而Java,当然还有IT论坛一些零碎的技术。总体而言,C#的使用时间要更长一些,其次是Java。我本身对语言没有什么倾向性,能干活的语言,就是好语言。而且从面向对象的角度来看,我觉得C#和Java对我来说,没什么区别。

  这篇文章主要回顾Java中和I/O操作相关的内容,I/O也是编程语言的一个基础特性,Java中的I/O分为两种类型,一种是顺序读取,一种是随机读取。

  我们先来看顺序读取,有两种方式可以进行顺序读取,一种是InputStream/OutputStream,它是针对字节进行操作的输入输出流;另外一种是Reader/Writer,它是针对字符进行操作的输入输出流。

  下面我们画出InputStream的结构

  

  • FileInputStream:操作文件,经常和BufferedInputStream一起使用
  • PipedInputStream:可用于线程间通信
  • ObjectInputStream:可用于对象序列化
  • ByteArrayInputStream:用于处理字节数组的输入
  • LineNumberInputStream:可输出当前行数,并且可以在程序中进行修改

  下面是OutputStream的结构

  

  • PrintStream:提供了类似print和println的接口去输出数据

  下面我们来看如何使用Stream的方式来操作输入输出

  • 使用InputStream读取文件
    1. 使用FileInputStream读取文件信息
    2. public static byte[] readFileByFileInputStream(File file) throws IOException
    3. {
    4.     ByteArrayOutputStream output = new ByteArrayOutputStream();
    5.     FileInputStream fis = null;
    6.     try
    7.     {
    8.         fis = new FileInputStream(file);
    9.         byte[] buffer = new byte[1024];
    10.         int bytesRead = 0;
    11.         while((bytesRead = fis.read(buffer, 0, buffer.length)) != -1)
    12.         {
    13.             output.write(buffer, 0, bytesRead);
    14.         }
    15.     }
    16.     catch(Exception ex)
    17.     {
    18.         System.out.println("Error occurs during reading " + file.getAbsoluteFile());
    19.     }
    20.     finally
    21.     {
    22.         if (fis !=null) fis.close();
    23.         if (output !=null) output.close();
    24.     }
    25.     return output.toByteArray();
    26. }
    复制代码
    1. 使用BufferedInputStream读取文件
    2. public static byte[] readFileByBufferedInputStream(File file) throws Exception
    3. {
    4.     FileInputStream fis = null;
    5.     BufferedInputStream bis = null;
    6.     ByteArrayOutputStream output = new ByteArrayOutputStream();
    7.     try
    8.     {
    9.         fis = new FileInputStream(file);
    10.         bis = new BufferedInputStream(fis);
    11.         byte[] buffer = new byte[1024];
    12.         int bytesRead = 0;
    13.         while((bytesRead = bis.read(buffer, 0, buffer.length)) != -1)
    14.         {
    15.             output.write(buffer, 0, bytesRead);
    16.         }
    17.     }
    18.     catch(Exception ex)
    19.     {
    20.         System.out.println("Error occurs during reading " + file.getAbsoluteFile());
    21.     }
    22.     finally
    23.     {
    24.         if (fis != null) fis.close();
    25.         if (bis != null) bis.close();
    26.         if (output != null) output.close();
    27.     }
    28.     return output.toByteArray();
    29. }
    复制代码

    • 使用OutputStream复制文件
      使用FileOutputStream复制文件
      使用BufferedOutputStream复制文件
      这里的代码对异常的处理非常不完整,稍后我们会给出完整严谨的代码。

      下面我们来看Reader的结构

      

      这里的Reader基本上和InputStream能够对应上。  

      Writer的结构如下

      

      下面我们来看一些使用Reader或者Writer的例子

    • 使用Reader读取文件内容
      使用BufferedReader读取文件内容
    • 使用Writer复制文件
      使用BufferedWriter复制文件

      下面我们来看如何对文件进行随机访问,Java中主要使用RandomAccessFile来对文件进行随机操作。

    • 创建一个大小固定的文件
      创建大小固定的文件
    • 向文件中随机写入数据
      向文件中随机插入数据

      接下里,我们来看一些IT论坛的常用操作

    • 移动文件
      移动文件
    • 复制文件
      复制文件
    • 复制文件夹
      复制文件夹
    • 删除文件夹
      删除文件夹
    • 获取文件夹大小
      获取文件夹大小
    • 将大文件切分为多个小文件
      将大文件切分成多个小文件
    • 将多个小文件合并为一个大文件
      将多个小文件合并成一个大文件
    • 执行外部命令
      执行外部命令


        作者:李胜攀
        出处:http://wing011203.cnblogs.com/


Java回顾之I/O

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博账号登陆

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部