什么时IO

  Java中的所有I/O机制都是基于数据流进行输入输出

  Java的I/O流提供了读写数据的标准的方法。

Java IO模型:

  Java I/O的设计使用的Decorator(装饰器)模式,按功能划分Stream,可以动态装配这些Stream

数据流的基本概念:

  数据从外存到内存为输入流,反之为输出流

  为什么设计成数据流:I/O关心数据来自哪里目的地是哪里

IO体系结构:

  

Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中。其中,

所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的子类;

而所有输出流都是抽象类OutputStream(字节输出流)或者Writer(字符输出流)的子类。

  输入流为读,输出流为写

  java的IO包中最重要的有5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader。一个接口指的是Serializable。

  

Java I/O主要包括如下几个层次,包含三个部分:

1.流式部分――IO的主体部分;

2.非流式部分――主要包含一些辅助流式部分的类,如:File类、RandomAccessFile类和FileDescriptor等类;

3.其他类–文件读取部分的与安全相关的类,如:SerializablePermission类,以及与本地操作系统相关的文件系统的类,如:FileSystem类和Win32FileSystem类和WinNTFileSystem类。

 

1.流式部分主要类:

  对文件进行操作:FileInputStream(字节输入流),FileOutputStream(字节输出流),FileReader(字符输入流),FileWriter(字符输出流)

  对管道进行操作:PipedInputStream(字节输入流),PipedOutStream(字节输出流),PipedReader(字符输入流),PipedWriter(字符输出流)。PipedInputStream的一个实例要和PipedOutputStream的一个实例共同使用,共同完成管道的读取写入操作。主要用于线程操作。

  字节/字符数组:ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter是在内存中开辟了一个字节或字符数组。

  Buffered缓冲流:BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,是带缓冲区的处理流,缓冲区的作用的主要目的是:避免每次和硬盘打交道,提高数据访问的效率。

  转化流:InputStreamReader/OutputStreamWriter,把字节转化成字符。

  数据流:DataInputStream,DataOutputStream。 因为平时若是我们输出一个8个字节的long类型或4个字节的float类型,那怎么办呢? 可以一个字节一个字节输出,也可以把转换成字符串输出,但是这样转换费时间,若是直接输出该多好啊,因此这个数据流就解决了我们输出数据类型的困难。 数据流可以直接输出float类型或long类型,提高了数据读写的效率。

  打印流:printStream,printWriter,一般是打印到控制台,可以进行控制打印的地方。

  对象流: ObjectInputStream,ObjectOutputStream,把封装的对象直接输出,而不是一个个在转换成字符串再输出。 

    使用对象流需要实现Serializable接口,否则会报错。

  序列化流:SequenceInputStream。 对象序列化:把对象直接转换成二进制,写入介质中。

 transient关键字(现在不会,以后回来)

2.非流式部分:

  File类是IO包中唯一代表磁盘文件本身的对象。通过File来创建,删除,重命名文件。File类对象的主要作用就是用来获取文本本身的一些信息。如文本的所在的目录,文件的长度,读写权限等等。(有的需要记忆,比如isFile(),isDirectory(),exits();有的了解即可。使用的时候查看API)

  File类的概述

  File更应该叫做一个路径,文件路径或者文件夹路径。路径分为绝对路径和相对路径
    绝对路径是一个固定的路径,从盘符开始
    相对路径相对于某个位置,在eclipse下是指当前项目下,在dos下
  构造方法
  File(String pathname):根据一个路径得到File对象
  File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
  File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象。。。。。。。。。。。。。。。。。未完待续
posted on 2018-02-27 22:09  nilknow  阅读(123)  评论(0)    收藏  举报