I/O流概述
I/O(Input/Output)流,即输人输出流,是Java中实现输人输出的基础,它可以方便地实现数据的输人输出操作。
I/O流有很多种,按照不同的分类方式,可以分为以下3类:
1.字节流和字符流
根据流操作的数据单位的不同,可以分为字节流和字符流。字节流以字节为单位进行数据的读写,每次读写一一个或多个字节数据;字符流以字符为单位进行数据的读写,每次读写一个或者多个字符数据。
2.输入流和输出流
根据流传输方向的不同,又可分为输人流和输出流。其中输人流只能从流中读取数据,而不能向其写人数据;输出流只能向流中写人数据,而不能从中读取数据。
3.节点流和处理流
根据流的功能不同,可以分为节点流和处理流。其中节点流也被称为低级资,是指可以从一个特定的I/0设备(如磁盘)读写数据的流,它只能直接连接数据源,进行数据的读写操作;处理流也被称为高级流,它用于对于一个已存在的节点流进行连接和封装,通过封装后的流来实现流的读写能力。当使用处理流时,程序不会直接连接到实际的数据源,而是连接在已存在的流之上
文件流
package day07;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
/**
* 流
* 流根据方向不同分为输入流与输出流,参照点为
* 当前程序
* 输入流用来读取数据,输出流用来写出数据
* java.io.InputStream
* 抽象类,定义了输入流的读取字节方法,所有的字节
* 输入流都继承自它
*
* java.io.OutputStream 则是所有字节输出流的父类
* @author
*
*
*流分类节点流与处理流
*节点流,也叫低级流,是负责读写数据的流
*读写操作中必须要有低级流。数据源明确
*
*处理流,也叫高级流,读写可以没有高级流,
*高级流也不能独立存在,必须用于处理其他流,
*处理其他流的目的是简化读写数据中的操作
*
* java.io.FileOutputStream
* 文件输出流,是一个低级流,作用是向文件中
* 写出字节
*/
public class FOSDemo {
public static void main(String[] args) throws IOException {
/**
* 默认创建的FOS是覆盖写操作
* FOS会将文件数据(所有数据)全部
* 删除,然后在开始写
*/
FileOutputStream fos = new FileOutputStream("fos.txt");
String str = "我爱北京天安门";
/**
* String->byte[]
*
* byte getBytes()
* 将当前字符串按照系统默认字符集转换为一组字节
*
* byte getBytes(String csn)
* 按照给定的字符集将当前字符串转换为一组字节
*/
byte[] data = str.getBytes("UTF-8");
fos.write(data);
System.out.println("写出完毕");
fos.close();
}
}
package day07;
/**
* 文件输出流
* 追加写操作
*/
import java.io.FileOutputStream;
import java.io.IOException;
public class FosDemo2 {
public static void main(String[] args) throws IOException{
/**
* 在创建FOS时,若指定第二个参数,
* 并且该值为true时,则是追加
* 写操作,那么本次通过FOS写出
* 的内容会被追加到该文件末尾
*/
FileOutputStream fos= new FileOutputStream("fos.txt",true);
fos.write("哦".getBytes("UTF-8"));
System.out.println("写出完毕");
fos.close();
}
}
package day07;
import java.io.FileInputStream;
import java.io.IOException;
/**
* Java.io.FileInputStream
* 文件输入流,是一个低级流,用于
* 从文件中读取字节
* @author
*
*/
public class FosDemo3 {
public static void main(String[