java.io.File 类 在java中不是指的一个文件,它既能够代表一个特定文件的名称,又能够代表一组文件的名称。如果代表的事一个文件集,那么可以调用list(),返回一个字符数组,这个数组可能是某个目录的名称也可以是一个文件的名称。
File file = new File(".");
String[] list = file.list();
System.out.println(Arrays.toString(list));
//[.idea, CollectionProject, out, pom.xml, src, StuProject1.iml, target]
String[] list = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if (name.equals("out")){
return true;
}else{
return false;
}
}
});
//可以在list中加入过滤的接口 这里只会输出out目录
java类库中I/O分为读写两部分。InputStream和Reader派生而来的类都有read(),OutputStream和Writer派生而来的类都有writer()方法。用于单个字节或者字节数组。
FileDescriptor表示文件来说:当FileDescriptor表示某文件时,我们可以通俗的将FileDescriptor看成是该文件。但是,我们不能直接通过FileDescriptor对该文件进行操作;若需要通过FileDescriptor对该文件进行操作,则需要新创建FileDescriptor对应的FileOutputStream,再对文件进行操作。
FileDescriptor可以通过out.getFD()以及fileInputStream.getFD()来获取。
类 | 功能 | 使用说明 |
---|---|---|
ByteArrayInputStream | 允许将内存缓存区当做InputStream使用 | 构造参数(缓冲区),字节将从缓冲区中取出 |
StringBufferInputStream | 将String转换成InputStream | 已经被抛弃官方推荐StringReader |
FileInputStream | 文件中读取信息 | 构造参数 字符串表示 文件路径 文件夹 文件名或者FileDescriptor |
PipedInputStream | PipedOutputStream一起形成管道 | 作为线程的数据来源 |
SequenceInputStream | 将两个输入流合并成一个输入流 | 构造器Enumeration和两个InputStream |
FilterInputStream | 抽象类,作为装饰器的接口,其中装饰器为其他InputStream类提供有用的功能 | 这是一个抽象类,有很多具体类 |
OutputStream类型 决定输出所要去的目标。
类 | 功能 | 使用说明 |
---|---|---|
ByteArrayOutputStream | 在内存中创建缓冲区,所有送往流的数据都要放置在缓存区 | 用于指定数据的目的地,可以构造的时候指定缓存区的大小 |
FileOutputStream | 将信息写至文件 | 参数可以是文件名、文件以及FileDescriptor |
PipedOutputStream | 管道的理解还是太浅需要以后专门理解 | 用于多线程 |
FilterOutputStream | 作为装饰器接口 | 抽象类,用于装饰更多的输出流功能 |
Reader与Writer
inputStream与OutputStream是面向byte而Reader与Writer面向char
InputStreamReader与OutputStreamWriter可以将inputStream与OutputStream转换为reader与writer
他们比原来的面向字节的流操作速度更快。
读取一行的操作最好用Reader原来的DataInputStream已经弃用。
RandomAccessFile
RandomAccessFile 不是reader或者inputStream的子类,他能在文件的任意位置做读写操作。构造器第一个标识文件路径,第二个标识打开权限 r只读 w只写 rw又读又写