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


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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值