什么是Java中的"常规文件"?

Thu*_*rge 29 java nio

BasicFileAttributes类用于检查文件系统中文件的属性,其方法为isRegularFile().不幸的是,Javadoc描述相当缺乏:

判断文件是否是包含不透明内容的常规文件.

这是什么意思?具有不透明内容的常规文件究竟是什么?我可以从类中的其他方法看出它不是目录或符号链接,所以我倾向于认为它是其他所有东西.但是,显然存在某种类型的"不规则文件",因为存在一个名为isOther()的方法,如果它不是目录,符号链接或"常规文件",则返回true.

那么Java中的常规文件到底是什么?

Jor*_*sys 16

例如,在UNIX中,常规文件在某种程度上并不特殊.特殊文件包括符号链接和目录.常规文件是永久存储在文件系统中的字节序列.

阅读此答案@ UNIX&Linux stackexchange:什么是常规文件?

我想rm -i是别名,可能是rm -i."常规"部分并不意味着什么,它只是意味着它不是管道,设备,插座或任何其他"特殊".

它意味着文件不是符号链接,管道,rand,null,cpu等.也许你已经听说过linux哲学,一切都是文本.这不是真的,但它提出了一个主要的操作上下文,其中字符串处理工具可以直接应用于文件系统元素.在这种情况下,它意味着更加文字化的方式.要单独查看检测步骤,请尝试命令文件,如文件/ etc/passwd或文件/ dev/null.

  • 该术语是否也适用于 Windows 和其他平台? (2认同)

Jor*_*pos 7

来自文件参考 - AIX IBM

文件是可以读取或写入的数据集合.文件可以是您创建的程序,您编写的文本,您获取的数据或您使用的设备.命令,打印机,终端和应用程序都存储在文件中.这允许用户以统一的方式访问系统的各种元素,并为操作系统提供极大的灵活性.创建文件时不会隐含任何格式.

有三种类型的文件

  • 常规 - 存储数据(文本,二进制和可执行文件).
  • 目录 - 包含用于访问其他文件的信息.
  • 特殊 - 定义FIFO(先进先出)文件或物理设备.

常规文件是最常见的.当使用文字处理程序创建文档时,程序和文档都包含在常规文件中.

常规文件包含文本或二进制信息.用户可以读取文本文件.二进制文件可由计算机读取.二进制文件可以是指示系统完成作业的可执行文件.命令,shell脚本和其他程序存储在可执行文件中.

目录包含系统访问所有类型文件所需的信息,但它们不包含实际的文件数据.因此,目录占用的空间比常规文件少,并赋予文件系统结构灵活性和深度.每个目录条目表示文件或子目录,并包含文件的名称和文件的索引节点(索引节点引用)编号.索引节点号表示唯一的索引节点,用于描述与文件关联的数据的位置.目录由一组单独的命令创建和控制.有关详细信息,请参阅操作系统和设备管理中的"目录".

特殊文件定义系统的设备或进程创建的临时文件.有三种基本类型的特殊文件:FIFO(先进先出),块和字符.FIFO文件也称为管道.管道由一个进程创建,以临时允许与另一个进程通信.当第一个进程完成时,这些文件不再存在.块和字符文件定义设备.

以上所有内容均来自第一个链接.我已经检查了很多关于操作系统差异的其他来源,看起来这是我发现的所有来源中最常见的定义.


FrV*_*aBe 5

我不是这方面的专家,但初看起来BasicFileAttributes不是一个类而是一个界面.因此,无论常规文件是什么,都取决于此接口的实现.我可以看到有例如WindowsFileAttributs实现此接口的类.

如果你看看这个类的OpenJDK版本,你会发现它是

!isSymbolicLink() && !isDirectory() && !isOther();
Run Code Online (Sandbox Code Playgroud)

从代码中获取所有其他信息;-)