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对象,必须指定路径,看下图代码:

Java之IO流操作_第1张图片

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

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

Java之IO流操作_第2张图片

想要显示其路径则可以使用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, intoff, intlen) 将指定字节数组中从偏移量off 开始的len 个字节写入此输出流。
abstract void write(intb) 将指定的字节写入此输出流。

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

Java之IO流操作_第3张图片

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

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

2.2、字节输入流(InputStream)

此类定义如下:public abstract class InputStream extendsObjectimplementsCloseable

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

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

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

Java之IO流操作_第4张图片

3.1、字符输出流(Writer)

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

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

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

Java之IO流操作_第5张图片

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

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

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



更多相关文章

  1. Android本地广播相关操作分析
  2. ANDROID STRINGS.XML的特殊字符_安卓STRING.XML添加空格或字符的
  3. Android JNI开发详解(7)-线程操作,异常处理
  4. 非常详细的测试unity与android之间的通讯操作
  5. Android如何连接和操作SQLite数据库
  6. 【Android 异步操作】AsyncTask 异步任务 ( 参数简介 | 方法简介

随机推荐

  1. 分享一个利用Ajax传递Xml文档的方法
  2. java通过XPath解析xml节点的代码详解
  3. 带你深入了解XML
  4. Android 淡入淡出动画xml配置代码展示
  5. XSL将XML中的CDATA注释输出为HTML文本的
  6. RSS全站静态输出和RSS订阅的步骤(dedecms)
  7. ASP.NET读取RSS的实例解析
  8. 关于XML字符的详细介绍
  9. 关于server.xml的9篇文章推荐
  10. 关于xdoc的10篇文章推荐