IO
java.io.File
**概述:**文件和目录路径名的抽象表示。
常用方法:
变量和类型 | 方法 | 概述 |
---|---|---|
String | getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串。 |
String | getName() | 返回此抽象路径名表示的文件或目录的名称。 |
String | getPath() | 将此抽象路径名转换为路径名字符串。 |
long | length() | 返回此抽象路径名表示的文件的长度。 |
boolean | isFile() | 测试此抽象路径名表示的文件是否为普通文件。 |
boolean | isDirectory() | 测试此抽象路径名表示的文件是否为目录。 |
File[] | listFiles() | 返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。 |
boolean | mkdirs() | 创建此抽象路径名指定的目录,包括任何必需但不存在的父目录。 |
boolean | renameTo(File dest) | 重命名此抽象路径名表示的文件。 |
成员属性:
变量和类型 | 字段 | 描述 |
---|---|---|
static String | pathSeparator | 与系统相关的路径分隔符,为方便起见,表示为字符串。";" |
static String | separator | 系统相关的默认名称分隔符,为方便起见,表示为字符串。"" |
文件过滤器FileFilter
是一个功能接口,不常用,了解
例:
public class Demo2 {
public static void main(String[] args) throws IOException {
File file = new File("文件位置");
listFile(file);
}
public static void listFile(File file){
FileFilter filter = new movFilter();
File[] files = file.listFiles(filter);
if (files!=null && files.length>0){
for (File f:files) {
if (f.isDirectory()){
listFile(f);
} else {
System.out.println("找到一个avi文件:" + f.getAbsolutePath());
}
}
}
}
static class aviFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".avi")||pathname.isDirectory())
return true;
return false;
}
}
}
相对路径和绝对路径
绝对路径:从盘符开始,是一个完整路径。例如:c://a.txt
相对路径:在java代码中是相对于项目目录路径,这是一个不完整的便捷路径。在java开发中很常见。例如:a.txt
流概念
概述
我们可以将这种数据传输的操作,看做一种数据的流动,按照流动的方向分为输入Input和输出Output。
java中的IO操作主要是指java.io包下的一些常用类的使用。通过这些常用类对数据进行读取(输入Input)和 写出(输出Output)
注:
流一定要记得关闭close()
IO流的分类
- 按照流的方向来分,可以分为:输入流和输出流。
- 按照流动的数据类型来分,可以分为:字节流和字符流
其中他们的顶级父类分别是:
字节流:
- 输入流:InputStream
- 输出流:OutputStream
字符流:
- 输入流:Reader
- 输出流:Writer
java.io.OutputStream
一切皆字节:
计算机中任何数据(文本,图片,视频,音乐等等)都是以二进制的形式储存的。
在数据传输时 也都是以二进制的形式储存的。
任何流在传输时底层都是二进制。
变量和类型 | 方法 | 描述 |
---|---|---|
void | close() | 关闭此输出流并释放与此流关联的所有系统资源。 |
void | flush() | 刷新此输出流并强制写出任何缓冲的输出字节。 |
static OutputStream | nullOutputStream() | 返回一个新的 OutputStream ,它丢弃所有字节。 |
void | write(byte[] b) | 将 b.length字节从指定的字节数组写入此输出流。 |
void | write(byte[] b, int off, int len) | 将从偏移量 off开始的指定字节数组中的 len字节写入此输出流。 |
abstract void | write(int b) | 将指定的字节写入此输出流。 |
java.io.FileOutputStream
构造方法
构造器 | 描述 |
---|---|
FileOutputStream(File file) | 创建文件输出流以写入由指定的 File对象表示的文件。 |
FileOutputStream(File file, boolean append) | 创建文件输出流以写入由指定的 File对象表示的文件。 |
FileOutputStream(String name) | 创建文件输出流以写入具有指定名称的文件。 |
FileOutputStream(String name, boolean append) | 创建文件输出流以写入具有指定名称的文件。 |
方法摘要
变量和类型 | 方法 | 描述 |
---|---|---|
void | close() | 关闭此文件输出流并释放与此流关联的所有系统资源。 |
void | write(byte[] b) | 将指定字节数组中的 b.length字节写入此文件输出流。 |
void | write(byte[] b, int off, int len) | 将从偏移量 off开始的指定字节数组中的 len字节写入此文件输出流。 |
void | write(int b) | 将指定的字节写入此文件输出流。 |
java.io.FileInputStream
构造方法
构造器 | 描述 |
---|---|
FileInputStream(File file) | 通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的 File对象 file命名。 |
FileInputStream(String name) | 通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的路径名 name命名。 |
方法摘要
变量和类型 | 方法 | 描述 |
---|---|---|
void | close() | 关闭此文件输入流并释放与该流关联的所有系统资源。 |
int | read() | 从此输入流中读取一个字节的数据。 |
int | read(byte[] b) | 从此输入流 b.length最多 b.length字节的数据读 b.length字节数组。 |
int | read(byte[] b, int off, int len) | 从此输入流 len最多 len字节的数据读入一个字节数组。 |
字符输出
FileWriter
常用方法:
变量和类型 | 方法 | 描述 |
---|---|---|
Writer | append(char c) | 将指定的字符追加到此writer。 |
abstract void | close() | 关闭流,先冲洗它。 |
abstract void | flush() | 刷新流。 |
void | write(char[] cbuf) | 写一个字符数组。 |
abstract void | write(char[] cbuf, int off, int len) | 写一个字符数组的一部分。 |
void | write(int c) | 写一个字符。 |
void | write(String str) | 写一个字符串。 |
void | write(String str, int off, int len) | 写一个字符串的一部分。 |
字符读取
FileReader
常用方法
变量和类型 | 方法 | 描述 |
---|---|---|
abstract void | close() | 关闭流并释放与其关联的所有系统资源。 |
int | read() | 读一个字符。 |
int | read(char[] cbuf) | 将字符读入数组。 |
abstract int | read(char[] cbuf, int off, int len) | 将字符读入数组的一部分。 |
int | read(CharBuffer target) | 尝试将字符读入指定的字符缓冲区。 |
字节转换(装饰)为字符流
使用了装饰者的设计模式
读取:
InputStreamReader
输出:
OutputStreamReader
propreties
.propreties文件与Propreties类
方法摘要
变量和类型 | 方法 | 描述 |
---|---|---|
String | getProperty(String key) | 在此属性列表中搜索具有指定键的属性。 |
String | getProperty(String key, String defaultValue) | 在此属性列表中搜索具有指定键的属性。 |
void | list(PrintStream out) | 将此属性列表打印到指定的输出流。 |
void | list(PrintWriter out) | 将此属性列表打印到指定的输出流。 |
void | load(InputStream inStream) | 从输入字节流中读取属性列表(键和元素对)。 |
void | load(Reader reader) | 以简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。 |
void | store(OutputStream out, String comments) | 将此 Properties表中的此属性列表(键和元素对)以适合使用 load(InputStream)方法加载到 Properties表的格式写入输出流。 |
void | store(Writer writer, String comments) | 将此 Properties表中的此属性列表(键和元素对)以适合使用 load(Reader)方法的格式写入输出字符流。 |