IO流
1.File类
- File:它是文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是一个真的存在的文件,仅仅只是一个路径名而已。他可以是存在的,也可以是不存在的,将来是要通过具体的操作把路径的内容转换为具体存在的。
-
构造方法
File(String pathName):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例 File(String parent,String child):从父路径名字符串和子路径名字符串创建新的File实例 File(File parent,String child):从父抽象路径名和子路径名字符串创建新的File实例
-
创建功能
public boolean createNewFile() 当具有该名称的文件不存在时,创建一个由该抽象路径名命 名的新空文件,返回true;否则返回false;父目录路径不存 在报错。 public boolean mkdir() 创建由此抽象路径名命名的目录;目录不存在创建返回ture,否则 false;父目录不存在报错; public boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必须但不存在的父目录;创 建成功返回true,不成功返回false;
-
判断和获取功能
public boolean isDirectory():测试此抽象路径名表示的File是否为目录 public boolean isFile():测试此抽象路径名表示的File是否为文件 public boolean exists():测试此抽象路径名表示的File是否存在 public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串 public String getPath():返回此抽象路径名转换为路径名字符串 public String getName():返回此抽象路径名表示的文件或目录的名称 public String[] list():返回此抽象路径名表示的目录中的文件和目录的名称字符串数组 public File[] listFiles():返回此抽象路径明表示的目录中的文件和File对象数组
-
File类的删除功能
public boolean delete():删除由此抽象路径名表示的文件和目录(目录必须为空才能删除)
案例:清空某个目录
private static void deleteFile(File file) { if (file.isFile()) { file.delete(); } else { File[] files = file.listFiles(); for (File file1 : files) { deleteFile(file1); } file.delete(); } }
2. IO流
-
IO流概述和分类
- 按照数据流向分为输入流和输出流
- 按照数据类型分为字节流和字符流
-
字节流抽象基类
- InputStream:这个抽象类是表示字节输入流的所有类的超类
- OutputStream:这个抽象类是表示字节输出流的所有类的超类
- 子类名特点:子类名称都是以其父类名作为子类名的后缀
-
FileOutputStream:文件输出流用于将数据写入File
- FileOutputStream(String name):创建文件输出流以指定名称写入文件
- FileOutputStream(String name,boolean append):是否追加写入
- void write(int b):将指定的字节写入此文件输出流,一次写一个字节数据
- void write(byte[] b):将b.length字节从指定字节数组写入此文件输出流,一次写一个字节数组数据
- void write(byte[] b,int off,int len):将len字节从指定的字节数组开始,从偏移量off开始写入次文件输出流,一次写一个字节数组的部分数据
注意:输出流写出完毕后一定要释放,释放前一定要判断是否存在该流!!!
-
FileInputStrem:从文件系统中的文件获取输入字节
- FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名。
- read():读取一个字节的数据并返回
- read(byte[] bytes):读取一个数组的数据,放入bytes中,返回读取到的字节数
-
字节缓冲流
- BufferedOutputStream:该类实现缓冲输出流。通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层的调用
- BufferedOuputStream(OuputStream os)
- BufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组。当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节
- BufferedInputStream(InputStream in)
- 字符缓冲流仅仅提供缓冲区,而真正的读写数据还得依靠基本的字节流对象进行操作
- BufferedOutputStream:该类实现缓冲输出流。通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层的调用