java编程思想 I/O 简单阅读

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又读又写

你可能感兴趣的:(读书笔记)