Java IO 基础

参考:Java IO技术博客

1. BIO(同步并阻塞)

字节输入流字节输出流字符输入流字符输出流
抽象基类InputStreamOutputStreamReaderWriter
访问文件FileInputStreamFileOutputStreamFileReaderFileWriter
访问数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter
缓冲流BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter
打印流PrintStreamPrintWriter


说明: 上面是一些比较常用的输入输出流,缓冲流可以一次处理一行文本,以换行符为标志,打印流的输出功能非常强大,方便处理打印操作。

注意: PrintWriter 的close()方法通常自带flush()。

使用场景:

输入输出内容为文本: 使用字符流

输入输出内容为二进制: 使用字节流

java使用处理流来包装节点流是一种典型的装饰器设计模式。

2. RandomAccessFile类

说明: RandomAccessFile是java输入/输出流体系中功能最丰富的文件内容访问类,可以读取和向文件写入数据。

优点:支持“随机访问”,可以直接跳转到文件的任意位置读写数据。 (注意:在向文件指定位置插入内容时,会覆盖掉插入点之后原有的内容)

缺点:只能读写文件,不能读写其它IO节点。

使用场景:

1)只需要访问文件部分内容,而不是把文件从头读到尾。

2)向已存在的文件后面追加内容,而不是从文件开始的地方直接输出。

3. 对象序列化

说明:将实现序列化的Java对象转换成字节序列,这些字节序列可以保存在磁盘上,或者能够通过网络传输,方便以后重新再恢复成原来的对象。

注意:定义的类必须实现Serializable接口

4. NIO(同步非阻塞)(JDK1.4)

新IO采用了内存映射文件的方式来处理输入/输出,新IO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了(模拟了操作系统虚拟内存的概念),相比传统的输入/输出要快!

Channels and Buffers(通道和缓冲区): 标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。

Selectors(选择器): Java NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。

Asynchronous IO(异步IO): Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java IO(Input/Output)是Java编程语言中用于处理输入和输出的基础库。它提供了一种方便的方式来读取和写入数据,从而与外部世界进行交互。 Java IO库包含多个类和接口,用于在不同的场景下处理输入和输出。这些类和接口可以分为字节流(Byte Stream)和字符流(Character Stream)两种类型。 字节流主要用于处理二进制数据,而字符流则用于处理文本数据。 常用的字节流类有: - InputStream和OutputStream:用于读取和写入字节数据。 - FileInputStream和FileOutputStream:用于读取和写入文件。 - BufferedInputStream和BufferedOutputStream:提供了缓冲功能,以提高读写的效率。 常用的字符流类有: - Reader和Writer:用于读取和写入字符数据。 - FileReader和FileWriter:用于读取和写入文本文件。 - BufferedReader和BufferedWriter:提供了缓冲功能,以提高读写的效率。 除了字节流和字符流之外,Java IO还提供了一些其他的类和接口,用于处理特定类型的输入和输出。例如: - DataInputStream和DataOutputStream:用于读写基本数据类型及字符串。 - ObjectInputStream和ObjectOutputStream:用于读写Java对象。 - PrintWriter:用于格式化输出。 在使用Java IO时,通常需要使用try-catch语句来捕获可能抛出的异常,例如IOException。 总结起来,Java IOJava编程语言中用于处理输入和输出的基础库,提供了字节流和字符流两种类型的处理方式,并且还包含其他一些类和接口,用于处理特定类型的输入和输出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值