java I/O体系总结(二) java IO补充

版权声明:可以转载,需注明出处 https://blog.csdn.net/wthfeng/article/details/82700686

java I/O 体系总结二

前言

继续说java的I/O体系,主要补充下上文没有提到的知识点或类。

java有关io的类在java.io包中。主要有以下几个部分。

  1. java i/o流部分(也是IO的主体部分)
  2. io辅助类,如File、RandomAccessFile或FileDescriptor,Closeable及Flushable等。
  3. io异常类

io流分类

根据数据来源分类:

  1. File(文件):FileInputStream、FileOutputStream(文件输入输出字节流);FileWriter、FileReader(文件输出输出字符流)
  2. byte[]:ByteArrayInputStream、ByteArrayOutputStream
  3. char[]:CharArrayReader、CharArrayWriter
  4. String: StringBufferInputStream、StringReader、StringWriter

阻塞式IO

上面讲解的都是阻塞式I/O。

阻塞io,一般说的是, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。阻塞式io中每个连接必须要开一个线程来处理,并且没处理完线程不能退出。因此,传统阻塞式IO的瓶颈在于不能处理过多的连接。

Java IO的流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。

File

File类是IO包唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法操作文件,包括文件的创建、重命名、判断文件是否存在等。

RandomAccessFile

RandomAccessFile 根据名字我们就能知道,这是一个支持随机访问的文件类,可以跳转到文件的任意位置处读写数据。RandomAccessFile 有一个位置指示器,指向当前读写处的问题,可移动此位置到任一地方。

如果需要访问文件的部分内容,RandomAccessFile是更好的选择。

此类只支持操作文件,不能访问其他IO设备如网络、内存等。

构造方法
RandomAccessFile(File file,String mode);

模式 作用
r 只读
rw 可读可写,文件不存在则创建
rws 读写,还会对文件内容及元数据的每次更新同步到底层存储设备
rwd 读写,还会对文件内容每次更新同步到底层存储设置

参考文章

  1. Java中的阻塞和非阻塞IO包各自的优劣思考(经典)
  2. 阻塞式IO和非阻塞式IO

猜你喜欢

转载自blog.csdn.net/wthfeng/article/details/82700686