文件和文件夹之间(文件系统特定的)区别是什么?
为什么java.nio.file.Files
中的不同方法需要创建一个或另一个? createDirectory(..)
和createFile(..)
。两者都使用Path
作为文件系统对象的句柄/标识符。
在创建一个或另一个失败案例时,我是否应该想到一些特别的东西(除了使用不同的方法创建一个或另一个)?
对于文件或文件夹的创建,如果已存在具有相同名称的文件或文件夹,则这是一种失败案例。如果它将是一个r / w文件或文件夹,在文件夹情况下可写意味着可以在其中创建文件,在文件情况下它意味着向其写入字节 - 如何检查这是否有区别?
如果实际上对于失败案例没有区别,我想抽象出一个自定义FileSystemObject
并对它们进行相同处理。
答案 0 :(得分:3)
好问题。
在最常见的操作系统(Windows,Linux等)中,文件夹可以包含内容。那些东西都有名字。每件东西都可以是文件或目录。
所以你可能有一些文件夹包含以下内容:
a
b
d c
d d
a
和b
是文件。 c
和d
是文件夹。 a
和b
只能包含二进制数据。但c
和d
可以包含其他文件/文件夹。
例如c
可能如下所示:
afile
anotherfile
d morestuff
d stuff
这允许您根据需要制作层次结构,无论您想要什么样的结构。这是recursive数据结构的一个非常基本的例子。选择是制作文件还是文件夹很有用,因为文件和文件夹是不同类型的东西。文件系统可能有文件也是文件夹,但我从未见过像这样的文件系统。例如,在Windows / Linux中,如果您创建文件,则不能将其用作文件夹,只能更改文件的内容(这只是任意二进制数据)。