Java之IO流操作

转载 2012年03月21日 16:50:29

http://blog.csdn.net/xiang_j2ee/article/details/6792572


通过全面几期对Android的入门级了解,感知若要想学好Android,不单单需要对Android运行机制和开发技巧融会贯通,Java基础也是必不可少的,由于工作上比较少用到IO流这块,之前接触的一点点也忘记了,所以近期很有必要花点时间复习了一下,下面对其做些总结。

       我认为:IO流在整个Java体系中其开发包是比较复杂的,也是一个难点,想要跨过此道门槛,必须要对面向对象的概念非常熟悉,而且要对抽象类非常了解。引用李老师的话,IO流的核心是:根据实例化子类的不同,完成的功能也不同。其实就是多态。

       1、File类

       File类是与文件操作有关的类,如创建、删除等操作。其构造方法是public File(String pathname),可以看出,若要生成一个File对象,必须指定路径,看下图代码:

       需要注意的是:不同操作系统路径之间的斜杠也不同,如windows系统是\\,而liunx是//,为了更好的跨平台,此处最好使用file类提供的API,file.separator,它会自动判断当前机子是属于哪类操作系统,从而动态的返回斜杠。至于还有很多有关file类的操作,我们可以根据文档来合理的使用,如:file.isFile();//判断是否是文件,file.isDirectory();//判断是否是目录等等。

       下面来看个有关File操作范例:列出一个指定文件夹中的所有内容。

 

想要显示其路径则可以使用file.listFiles();

 

       2、字节流和字符流

       通过上来的例子可以知道,File只是与文件有关的操作,其并不能对文件的内容进行操作,如果要对文件内容进行操作,就需要通过使用字节流和字符流来完成,但不管是哪一种操作,都有其固定的操作顺序:

       ·使用File类找到文件

       ·通过字节流或字符流的子类进行对象的实例化

       ·进行读、写操作

       ·关闭字节流或字符流

       

       注意:由于流是属于资源性的操作,所以一定要通过关闭来释放资源。

       操作流有以下几个:字节流 InputStream OutputStream     字符流 Writer Reader

      

       2.1、字节输出流(OutputStream)

   此类定义如下:public abstract class OutputStream extends Object implements Closeable, Flushable

       由于是个抽象类,根据面向对象的概念,必须由子类对其进行实例化操作。其方法如下:

 

 void close()  关闭此输出流并释放与此流有关的所有系统资源。
 void flush()  刷新此输出流并强制写出所有缓冲的输出字节。
 void write(byte[] b)b.length 个字节从指定的字节数组写入此输出流。
 void write(byte[] b, int off, int len)  将指定字节数组中从偏移量off 开始的len 个字节写入此输出流。
abstract  void write(int b)  将指定的字节写入此输出流。

      下面范例使用OutputStream向路径D:\file\test.txt输出Hello World!!!

            此代码每执行一次都会覆盖掉之前的内容,如果不想将其覆盖掉,则在实例化时候可以调用另外一个构造方法

new FileOutputStream(file,true)即可。若要换行则可以在字符串中输入\r\n,形如:“\r\nHello World!!!”,试试看。

 

       2.2、字节输入流(InputStream)

       此类定义如下:public abstract class InputStream extendsObject implementsCloseable

       显然,它也需要通过子类对其进行实例化操作,其常用操作方法有:

abstract  int read()  从输入流读取下一个数据字节。
 int read(byte[] b)  从输入流中读取一定数量的字节并将其存储在缓冲区数组b 中。
 int read(byte[] b, int off, int len) 将输入流中最多len 个数据字节读入字节数组。

       下面使用InputStream从路径D:\file\test.txt读出内容。

        

 

       3.1、字符输出流(Writer)

       此类定义如下:public abstract class Writer extendsObject implementsAppendable,Closeable,Flushable

       显然,它也需要通过子类对其进行实例化操作,其常用操作方法有:

       范例:使用Writer向文件输出内容:

       

       由此可以发现,我们无法操作的java的API,非常轻松实现了对文件的操作,所以下面Reader类就不再写,感兴趣的可以自己去练习,下面对字节流和字符流做一个比较:

       字节流和字符流在其代码结构上是有很多相似处,但其内部本身是有区别的,其中最大的区别在于字符流在操作的时候会使用到缓冲区,而字节流不会用到。

       在使用字节流OutputStream向外输出时,若最后不关闭流,也可以向外输出,但是若采用字符流Writer向外输出时不关闭流,则肯定不会输出消息,因为内容都存放在缓冲区处,显然,当调用了close()时,意味着清空缓存。



Java 常用IO流操作详解

IO流大家肯定不陌生,简单整理了一下常用IO流基本用法,其他的IO流以后有时间在整理。 1.基本概念IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,...
  • MAGIC_JSS
  • MAGIC_JSS
  • 2016年05月22日 17:19
  • 11144

使用Java 8聚合操作处理IO流

如何使用Java 8的聚合操作(Stream)处理IO流目前只研究了java.io.*的相关操作,对于nio暂时没有研究 Oracle在2014年发布了Java 8。Oracle在该版本中添加了许...
  • github_35963425
  • github_35963425
  • 2016年10月15日 16:43
  • 362

Java中IO流操作文件总结

IO流操作文件总结 拷贝文件 package com.cloud.day1; import java.io.File; import java.io.FileInputStre...
  • dzy21
  • dzy21
  • 2016年07月24日 17:08
  • 970

最完整的Java IO流学习总结

一、 File类 1、 java.io.File 类是专门对文件进行操作的类。(只能对文件本身进行操作,不能对文件内容操作) 2、 File类是“文件和目录路径名的抽象表示”。 而不是指文件的内容...
  • SilenceOO
  • SilenceOO
  • 2016年03月28日 00:37
  • 595

黑马程序员-Java I/O流(一)-IO流概述、字符流、字节流、流操作规律

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-1. 概述 流:可以理解数据的流动,就是一个数据流。Java中与IO相关的类有很多,都集中在java.io...
  • u012561959
  • u012561959
  • 2015年11月05日 04:24
  • 1583

黑马程序员——Java基础---IO流(字符流、字节流、转换流、流操作规律)

简述: IO(Input Output) IO流用于处理设备之间的数据传输。(比如硬盘上的文件,内存中驻留的数据)IO流是用于操作数据的,数据的最常见体现形式是:文件。 ...
  • u011965771
  • u011965771
  • 2014年11月24日 21:47
  • 1887

IO--字符流操作五种方式及字节流的四种方式+图谱

字节流复制文件的四种方式(简单的读取操作,将复制操作拆分即可)import java.io.BufferedInputStream; import java.io.BufferedOutputStre...
  • Blog_Zyx
  • Blog_Zyx
  • 2017年08月05日 09:42
  • 224

Java IO流经典练习题

本文对javaIO流的练习题做了比较详细的解答,其中有比较基础的,也有比较繁琐的,都是可以加深对javaIO流的全面的理解...
  • wenzhi20102321
  • wenzhi20102321
  • 2016年09月19日 09:10
  • 13926

JAVA IO 流操作

JAVA IO 流操作InputStream 和OutputStream  1.InputStream  ◇ 从流中读取数据:  int read( ); //读取一个字节,返回值为所读的字节  in...
  • Zealot_pz
  • Zealot_pz
  • 2010年11月27日 12:33
  • 326

0821 Java io流操作

一、io流定义 数据流向某个对象的数据序列, 并且到达这个对象的过程。 二、io流分类 输入流:数据源数据流向计算机内存的过程 输出流:把数据从程序流向目标数据源的过程 字节流:以字节为数据单位来处...
  • xuezhezhiying
  • xuezhezhiying
  • 2017年08月21日 18:55
  • 55
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java之IO流操作
举报原因:
原因补充:

(最多只允许输入30个字)