讲输入输出流之前得提到文件类File
File类的常用方法
方法名称 | 说 明 |
---|---|
boolean exists( ) | 判断文件或目录是否存在 |
boolean isFile( ) | 判断是否是文件 |
boolean isDirectory( ) | 判断是否是目录 |
String getPath( ) | 返回此对象表示的文件的相对路径名 |
String getAbsolutePath( ) | 返回此对象表示的文件的绝对路径名 |
String getName( ) | 返回此对象表示的文件或目录的名称 |
boolean delete( ) | 删除此对象指定的文件或目录 |
boolean createNewFile( ) | 创建名称的空文件,不创建文件夹 |
long length() | 返回文件的长度,单位为字节, 如果文件不存在,则返回 0L |
流的基本概念
• 如何读写文件?
• 通过流来读写文件
– 流是指一连串流动的字符,是以先进先出方式发
▪ 送信息的通道
输入/输出流与数据源
▪ XXX->程序–>输入流
▪ 程序->XXX–>输出流
Java流的分类
1、输入流和输出流,入输出流是相对于计算机内存来说的,而不是相对于源和目标。
2、字节流和字符流,字节流是 8 位通用字节流,字符流是 16 位 Unicode 字符流
3、通过功能不同分类
①节点流:可以直接从数据源或目的地读写数据。
② 处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装。目的主要是简化操作和提高性能。
▪ 节点流和处理流的关系
– 节点流处于io操作的第一线,所有操作必须通过他们进行
– 处理流可以对其他流进行处理(提高效率或操作灵活性)
关于文件的读写
文本文件的读写
① 用FileInputStream和FileOutputStream读写文本文件
② 用BufferedReader和BufferedWriter读写文本文件
二进制文件的读写
– 使用DataInputStream和DataOutputStream读写二进制文件以及
基本数据类型数据的读写
对象的读写
– 使用ObjectInputStream和ObjectOutputStream读写对象(序列
化与反序列化)
这里先讲解两个类:FileInputStream、FileOutputStream
FileInputStream用于读取文件的内容,读取到某个字节数组
FileInputStream fis = new FileInputStream("hello.txt");
int n = 0;
while ((n = fis.read())!=-1){
System.out.print((char)n);
}
fis.close();//关闭输入流,节省资源
方法名 | 描述 |
---|---|
public int read() | 从输入流中读取一个数据字节 |
public int read(byte) | 从输入流中将最多b.length个字节的数据读入一个byte数组中 |
public int read( byte[],int off,int len) | 从输入流中将最多len个字节的数据读入byte数组中 |
public void close() | 关闭此文件输入流并释放与此流有关的所有系统资源 |
缓冲流
①缓冲输入流BufferedInputStream
②缓冲输出流BufferedOutputStream
使用方法类似,可以自行查看文档,此处注意一点即缓冲流构造方法可以之际用文件输入输出流作为参数
字符流
读文件 :使用Reader抽象类实现
写文件:使用Writer抽象类实现
public class ReadWriteDemo {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis