java.io 通过数据流、序列化和文件系统提供系统输入和输出

来源:互联网 发布:软件开发保密协议范本 编辑:程序博客网 时间:2024/04/29 12:33


java.io 通过数据流、序列化和文件系统提供系统输入和输出

如果有缓存区,缓存区用完后必须关闭,否则可能导致内存占满而发生数据丢失。

--接口

         --Closeable  Closeable 是可以关闭的数据源或目标。

         --DataInput  [用于从二进制流中读取字节。如果在读取所需字节数之前已经到达文件末尾 (end of file),则将抛出 EOFException(IOException 的一种)。否则,将抛出 IOException 而不是 EOFException。尤其是,在输入流已关闭的情况下,将抛出 IOException。]

         --DataOutput  [用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流。对于此接口中写入字节的所有方法,如果由于某种原因无法写入某个字节,则抛出 IOException。]

         --Externalizable  [父接口为Serializable,Externalizable 实例类的唯一特性是可以被写入序列化流中,该类负责保存和恢复实例内容。]

         --FileFilter  [用于抽象路径名的过滤器。boolean accept(File pathname)测试指定抽象路径名是否应该包含在某个路径名列表中。]

         --FilenameFilter  [实现此接口的类实例可用于过滤器文件名。boolean accept(File dir,String name)测试指定文件是否应该包含在某一文件列表中。参数:dir -被找到的文件所在的目录。name -文件的名称。]

         --Flushable  [是可刷新数据的目标地。调用 flush 方法将所有已缓冲输出写入底层流。]

         --ObjectInput  [ObjectInput 扩展 DataInput 接口以包含对象的读操作。DataInput 包括基本类型的输入方法;ObjectInput 扩展了该接口,以包含对象、数组和 String 的输出方法。]

         --ObjectInputValidation

         --ObjectOutput

         --ObjectStreamConstants

         --Serializable

--类

PushbackReader允许将字符推回到流的字符流reader。推回字符数组(或单个)时是复制到推回缓冲区的前面。如缓冲区apple,推回pear,则 applepear

***********************************************************************************************************************************************

PipedReader传送的字符输入流。 PipedWriter和PipedReader的作用是可以通过管道进行线程间的通讯。在使用管道通信时,必须将PipedWriter和PipedReader配套使用。

 ***********************************************************************************************************************************************

InputStreamReader

字节流通向字符流的桥梁,可指定字符集。为了达到最高效率,建议在BR内包装它。

***********************************************************************************************************************************************

BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

 BufferedReader in = new BufferedReader(new FileReader("foo.in"));

***********************************************************************************************************************************************

FilterReader

没什么用,都是父类的方法。装饰模式,先不管了0.0

***********************************************************************************************************************************************

CharArrayWriter此类实现一个可用作Writer的字符缓冲区。缓冲区会随向流中写入数据而自动增长。可使用 toCharArray() 和 toString() 获取数据。

注:在此类上调用 close() 无效,并且在关闭该流后可以调用此类中的各个方法,而不会产生任何 IOException。

 ***********************************************************************************************************************************************

PrinterWriter向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,赢使用未编码的字节流进行写入。

如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作

***********************************************************************************************************************************************

FileReader用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。

其实没有缓冲区。

***********************************************************************************************************************************************

BufferedReader将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。该类提供newLine()方法换行,它使用平台自己的行分隔符概念,建议使用。通常 Writer 将其输出立即发送到底层字符或字节流。建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,

 PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

***********************************************************************************************************************************************

          

FilterInputStream 类本身只是简单地重写那些将所有请求传递给所包含输入流的 InputStream 的所有方法。FilterInputStream 的子类可进一步重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。

其实就是,依旧没什么用0.0

***********************************************************************************************************************************************

FileInputStream从文件系统中的某个文件中获得输入字节,用于读取诸如图像数据之类的原始字节流。

***********************************************************************************************************************************************

 

StringBufferInputStream已过时,用StringReader代替

 ***********************************************************************************************************************************************

 


ObjectOutputStream将 Java 对象的基本数据类型和图形写入 OutputStream。

只能将支持 java.io.Serializable 接口的对象写入流中。

***********************************************************************************************************************************************

DataInputStream数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。 此类对于多线程访问不一定是安全的。 线程安全是可选的,它由此类方法的使用者负责。

 ***********************************************************************************************************************************************

ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。

关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。

***********************************************************************************************************************************************

SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

构造方法:SequenceInputStream(Enumeration<? extends InputStream> e)

通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。

***********************************************************************************************************************************************

BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节。

用法与字符流那里类似。

0 0