基于 IO 流基础总结
io 解说:
按照流动的方向, 以内存为基准, 分为 输入 input 和 输出 output , 即流向内存是输入流, 流出内存的输出流.
Java 中 I/O 操作主要是指使用 java.io 包下的内容, 进行输入, 输出操作. 输入也叫做读取数据, 输出也叫做作写 出数据.
1. 根据数据的流向分为: 输入流和输出流.
输入流 : 把数据从其他设备 上读取到 内存 中的流.
输出流 : 把数据从 内存 中写出到 其他设备 上的流.
2. 根据数据的类型分为: 字节流和字符流.
字节流 : 以字节为单位, 读写数据的流.
字符流 : 以字符为单位, 读写数据的流.
io.PNG
字节流
1. 由于任何数据都是以二进制数字的形式存储的, 因此一切的文件数据 (图片, 视频, 音乐, 文件) 都可以用字节流传输.
2. 无论使用什么样的流对象, 底层传输的始终为二进制数据.
字节输出流 OutputStream
java.io.OutputStream 抽象类是表示字节输出流的所有类的超类, 将指定的字节信息写出到目的地.
public void close() : 关闭此输出流并释放与此流相关联的任何系统资源.
public void flush() : 刷新此输出流并强制任何缓冲的输出字节被写出.
public void write(byte[] b) : 将 b.length 字节从指定的字节数组写入此输出流.
public void write(byte[] b, int off, int len) : 从指定的字节数组写入 len 字节, 从偏移量 o开始输 出到此输出流.
public abstract void write(int b) : 将指定的字节输出流.
注意:
close 方法, 当完成流的操作时, 必须调用此方法, 释放系统资源.
FileOutputStream 子类
1.OutputStream 是抽象类, 不能直接实例化. 因此需使用子类来创建对象.
2.java.io.FileOutputStream 类是文件输出流, 用于将数据写出到文件.
注意事项:
当你创建一个流对象时, 必须传入一个文件路径. 该路径下, 如果没有这个文件, 会创建该文件. 如果有这个文件, 会清空这个文件的数据.
例如:
- package file.OutputStreamDemo;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.OutputStream;
- /**
- * public FileOutputStream(File file) : 创建文件输出流以写入由指定的 File 对象表示的文件.
- * public FileOutputStream(String name) : 创建文件输出流以指定的名称写入文件.
- */
- public class FileDemo1 {
- public static void main(String[] args) throws FileNotFoundException {
- // 使用 file 对象创建流对象
- File file=new File("D:\\Java 代码 \\Java 基础加强 \\a.txt");
- OutputStream outputStream=new FileOutputStream(file);
- // 直接使用文件名创建流对象
- FileOutputStream fileOutputStream=new FileOutputStream(
- "D:\\Java 代码 \\Java 基础加强 \\a.txt");
- }
- }
写出字节数据
写出字节: write(int b) 方法, 每次可以写出一个字节数据.
- package file.OutputStreamDemo;
- import java.io.FileOutputStream;
- import java.io.IOException;
- public class FileOutputStreamDemo2 {
- public static void main(String[] args) throws IOException {
- FileOutputStream fileOutputStream=new FileOutputStream("D:\\Java 代码 \\Java 基础加强 \\a.txt");
- fileOutputStream.write(97);// 写出第 1 个字节
- fileOutputStream.write(98);// 写出第 2 个字节
- fileOutputStream.write(99);// 写出第 3 个字节
- fileOutputStream.write(100);// 写出第 4 个字节
- // 关流
- fileOutputStream.close();
- }
- }
1. 虽然参数为 int 类型四个字节, 但是只会保留一个字节的信息写出.
流操作完毕后, 必须释放系统资源, 调用 close 方法, 千万记得.
来源: http://www.jianshu.com/p/e1db14b8861f