Java IO流
来源:互联网 发布:外贸邮件群发软件 编辑:程序博客网 时间:2024/06/05 09:17
Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(stream),通过流的方式允许Java程序使用相同的方式来访问不同的输入/输出源。
流的分类
按照不同的分类方式将流分为不同的类型:
1.输入流和输出流
按照流的流向来分,可以分为输入流和输出流。
输入流:只能从中读取数据,而不能向其写入数据。
输出流:只能向其写入数据,而不能从中读取数据。
Java的输入流主要由InputStream和Reader作为基类,而输出流则主要由OutputStream和Writer作为基类。它们都是一些抽象基类,无法直接创建实例。
2.字节流和字符流
字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不同——字节流操作的数据单元是8位的字节,而字符流的数据单元是16位的字符。
字节流主要由InputStream和OutputStream作为基类,而字符流则主要由Reader和Writer作为基类。
3.节点流和处理流
节点流:可以从/向一个特定的IO设备(如磁盘、网络)读/写数据的流。称为节点流,节点流也被称为低级流。
处理流:用于一个已存在的流进行连接或封装,通过封装后的流来实现数据读/写功能。处理流也被称为高级流。
实际上,Java使用处理流来包装节点是一种典型的装饰器设计模式,通过使用处理流来包装不同的节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入/输出功能。因为此处理流也被称为包装流。
字节流和字符流
InputStream和Reader是所有输入流的抽象基类,本身并不能创建实例来执行输入,但它们将成为所有输入流的模板,它们的方法是所有输入流都可使用的方法。而FileInputStream和FileReader是专门用来读取文件的输入流,它们都是节点流——会直接和指定文件关联。下面程序示范了使用FileInputStream来读取自身的效果。
int read(byte[] b):从输入流中最多读取b.length个字节的数据,并将其存储在字节数组b中。
上面程序创建了一个长度为1024的字节数组来读取该文件,实际上该Java源文件的长度还不到1024字节,程序只需要执行一次read()方法即可读取全部内容。
下面程序使用FileReader来读取文件本身。
该程序中字符数组的长度为32,这意味着程序需要多次调用read()方法才可以完全读取输入流的全部数据。
OutputStream和Writer
void write(byte[]/char[] buf):将字节数组/字符数组中的数据输出到指定输出流中。
void write(String str):将str字符串里包含的字符输出到指定输出流中。
下面程序使用FileInputStream来执行输入,并使用FileOutputStream来执行输出,用以实现复制FileOutputStreamTest.java文件的功能。
运行上面程序,将看到系统当前路径下多了一个文件:newFile.txt,该文件的内容和FileOutputStream.java文件的内容完全相同。
如果希望直接输出字符串内容,则使用Writer会有更好的效果,如下程序所示。
运行上面程序,将会在当前目录下输出一个poem.txt文件,文件内容就是程序中输出的内容。
- JAVA【IO一】IO流
- Java-IO-java的IO流
- java IO 流
- JAVA之IO流
- java IO(字符流)
- java的io流
- JAVA之IO流(
- JAVA 基础IO流
- JAVA 中的IO流
- Java IO 流学习
- JAVA 中的IO流
- Java IO流操作方法。。
- java io流总结
- 转]JAVA IO流
- JAVA IO流
- Java中的IO流
- JAVA IO 流操作
- 详述JAVA IO流
- 为什么要多线程开发
- 集成 jpush-react-native 常见问题汇总 (iOS 篇)
- 教务管理系统8-4
- NYOJ 8 一种排序
- JQuery-导航栏收缩左边栏
- Java IO流
- 冒泡排序同时得到最大、最小值位置
- BZOJ 2259: [Oibh]新型计算机 heap+dijkstra
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
- IM聊天实现思路及其采用 node+socket.io+elasticsearch实现的代码片段
- Uva 11988 例题6-4 破损的键盘
- SQL 中聚集索引
- 基于H5<audio>标签并通过js和jQuery实现网页版音乐播放器
- LLVM学习笔记(15)