[关闭]
@adamhand 2019-03-24T05:38:28.000000Z 字数 871 阅读 768

Java I/O之FileDescriptor


基本概念

FileDescriptor即“文件描述符”,可以用来表示开放文件、开放套接字。这个概念来自于Unix操作系统,Unix操作系统中“一切皆文件”,比如文件、目录、进程、网络socket、各种硬件设备等,都被看成文件;

在Windows下,FileDescriptor称之为“文件句柄”, 句柄是Windows下各种对象的标识符, 比如文件、资源、菜单、光标、位图等。

当应用程序请求打开或者操作文件时,操作系统会提供一个非负整数,作为一个索引号,它的作用就像地址或者说指针或者说偏移量,这个索引号就用来定位文件数据在内存中的位置。

但是只有FileDescriptor,我们是无法读写文件的,我们还需要FileInputStream、FileOutputStream或RandomAccessFile等类来实现文件的读写。

标准I/O流

操作系统有三个标准I/O流。

FileDescriptor 名称 POSIX常量标识(unistd.h) 标准IO常量标识(stdio.h)
0 标准输入流 STDIN_FILENO stdin
1 标准输出流 STDOUT_FILENO stdout
2 标准错误流 STDERR_FILENO stderr

FileDescriptor类中也定义了这三个常量:

  1. public static final FileDescriptor in = standardStream(0);
  2. public static final FileDescriptor out = standardStream(1);
  3. public static final FileDescriptor err = standardStream(2);

参考:
Channel & FileDescriptor
java NIO之FileChannel实现原理
[一]FileDescriptor文件描述符 标准输入输出错误 文件描述符
JavaIO流复习与巩固--FileDescriptor与File
Java中的Java.io.FileDescriptor
Java NIO3:通道和文件通道

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注