• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > java 基础知识之IO总结

java 基础知识之IO总结

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java io流读写文件,java io流完整例子,java.io.eofexception,java io详解,java.io.ioexception等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

java  基础知识之IO总结

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

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

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

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

  下面我们画出InputStream的结构

  

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

  下面是OutputStream的结构

  

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

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

使用InputStream读取文件

使用FileInputStream读取文件信息
public static byte[] readFileByFileInputStream(File file) throws IOException
{
  ByteArrayOutputStream output = new ByteArrayOutputStream();
  FileInputStream fis = null;
  try
  {
    fis = new FileInputStream(file);
    byte[] buffer = new byte[1024];
    int bytesRead = 0;
    while((bytesRead = fis.read(buffer, 0, buffer.length)) != -1)
    {
      output.write(buffer, 0, bytesRead);
    }
  }
  catch(Exception ex)
  {
    System.out.println("Error occurs during reading " + file.getAbsoluteFile());
  }
  finally
  {
    if (fis !=null) fis.close();
    if (output !=null) output.close();
  }
  return output.toByteArray();
}
</div>

使用BufferedInputStream读取文件
public static byte[] readFileByBufferedInputStream(File file) throws Exception
{
  FileInputStream fis = null;
  BufferedInputStream bis = null;
  ByteArrayOutputStream output = new ByteArrayOutputStream();
  try
  {
    fis = new FileInputStream(file);
    bis = new BufferedInputStream(fis);
    byte[] buffer = new byte[1024];
    int bytesRead = 0;
    while((bytesRead = bis.read(buffer, 0, buffer.length)) != -1)
    {
      output.write(buffer, 0, bytesRead);
    }
  }
  catch(Exception ex)
  {
    System.out.println("Error occurs during reading " + file.getAbsoluteFile());
  }
  finally
  {
    if (fis != null) fis.close();
    if (bis != null) bis.close();
    if (output != null) output.close();
  }
  return output.toByteArray();
}
</div>

使用OutputStream复制文件

使用FileOutputStream复制文件
public static void copyFileByFileOutputStream(File file) throws IOException
{
  FileInputStream fis = null;
  FileOutputStream fos = null;
  try
  {
    fis = new FileInputStream(file);
    fos = new FileOutputStream(file.getName() + ".bak");
    byte[] buffer = new byte[1024];
    int bytesRead = 0;
    while((bytesRead = fis.read(buffer,0,buffer.length)) != -1)
    {
      fos.write(buffer, 0, bytesRead);
    }
    fos.flush();
  }
  catch(Exception ex)
  {
    System.out.println("Error occurs during copying " + file.getAbsoluteFile());
  }
  finally
  {
    if (fis != null) fis.close();
    if (fos != null) fos.close();
  }
}
</div>


使用BufferedOutputStream复制文件
public static void copyFilebyBufferedOutputStream(File file)throws IOException
{
  FileInputStream fis = null;
  BufferedInputStream bis = null;
  FileOutputStream fos = null;
  BufferedOutputStream bos = null;
  try
  {
    fis = new FileInputStream(file);
    bis = new BufferedInputStream(fis);
    fos = new FileOutputStream(file.getName() + ".bak");
    bos = new BufferedOutputStream(fos);
    byte[] buffer = new byte[1024];
    int bytesRead = 0;
    while((bytesRead = bis.read(buffer, 0, buffer.length)) != -1)
    {
      bos.write(buffer, 0, bytesRead);
    }
    bos.flush();
  }
  catch(Exception ex)
  {
    System.out.println("Error occurs during copying " + file.getAbsoluteFile());
  }
  finally
  {
    if (fis != null) fis.close();
    if (bis != null) bis.close();
    if (fos != null) fos.close();
    if (bos != null) bos.close();
  }
}
</div>

这里的代码对异常的处理非常不完整,稍后我们会给出完整严谨的代码。

  下面我们来看Reader的结构

  

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

  Writer的结构如下

  

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

使用Reader读取文件内容

使用BufferedReader读取文件内容
public static String readFile(String file)throws IOException
{
  BufferedReader br = null;
  StringBuffer sb = new StringBuffer();
  try
  {
    br = new BufferedReader(new FileReader(file));
    String line = null;
    
    while((line = br.readLine()) != null)
    {
      sb.append(line);
    }
  }
  catch(Exception ex)
  {
    System.out.println("Error occurs during reading " + file);
  }
  finally
  {
    if (br != null) br.close();
  }
  return sb.toString();
}
</div>

使用Writer复制文件

使用BufferedWriter复制文件
public static void copyFile(String file) throws IOException
{ 
  BufferedReader br = null;
  BufferedWriter bw = null;
  try
  {
    br = new BufferedReader(new FileReader(file));
    bw = new BufferedWriter(new FileWriter(file + ".bak"));
    String line = null;
    while((line = br.readLine())!= null)
    {
      bw.write(line);
    }
  }
  catch(Exception ex)
  {
    System.out.println("Error occurs during copying " + file);
  }
  finally
  {
    if (br != null) br.close();
    if (bw != null) bw.close();
  }
}
</div>

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

创建一个大小固定的文件

创建大小固定的文件
public static void createFile(String file, int size) throws IOException
{
  File temp = new File(file);
  RandomAccessFile raf = new RandomAccessFile(temp, "rw");
  raf.setLength(size);
  raf.close();
}
</div>

向文件中随机写入数据

向文件中随机插入数据
public static void writeFile(String file, byte[] content, int startPos, int contentLength) throws IOException
{
  RandomAccessFile raf = new RandomAccessFile(new File(file), "rw");
  raf.seek(startPos);
  raf.write(content, 0, contentLength);
  raf.close();
}
</div>

  接下里,我们来看一些其他的常用操作

移动文件

移动文件
public static boolean moveFile(String sourceFile, String destFile)
{
  File source = new File(sourceFile);
  if (!sou



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java 中IO流字符流详解及实例
  • Java中IO流简介_动力节点Java学院整理
  • Java IO流体系继承结构图_动力节点Java学院整理
  • Java IO流 文件的编码实例代码
  • 关于Java中的IO流总结(推荐)
  • Java中IO流详解
  • java IO 文件操作方法总结
  • Java IO中字节流复制图片实现代码
  • java 基础知识之IO总结
  • Java 中IO流字符流详解及实例

相关文章

  • 2017-05-28Spring MVC登录注册以及转换json数据
  • 2017-05-28详解Spring整合Ehcache管理缓存
  • 2017-05-28Serializable接口的作用_动力节点Java学院整理
  • 2017-05-28Java数组的特性_动力节点Java学院整理
  • 2017-05-28Android 应用按返回键退向后台运行实例代码
  • 2017-05-28java 中sleep() 和 wait() 的对比
  • 2017-05-28spring boot(三)之Spring Boot中Redis的使用
  • 2017-05-28java向文件中追加内容与读写文件内容源码实例代码
  • 2017-05-28spring MVC + bootstrap实现文件上传示例(带进度条)
  • 2017-05-28Java Exception 捕获和显示实例详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • java Future 接口使用方法详解
    • Mybatis传list参数调用oracle存储过程的解决方法
    • Java微信公众号开发之通过微信公众号获取用户信息
    • Java easyui树形表格TreeGrid的实现代码
    • 详解Java单元测试Junit框架实例
    • Java创建内部类对象实例详解
    • SWT(JFace)体验之ViewForm的使用
    • Spring Boot启动过程完全解析(二)
    • java 基本算法之归并排序实例代码
    • springboot全局异常处理详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有