Java (新しいバージョン) および Windows XP (ntfs) の場合:
1 - 既存のファイル f、 Files.createFile(Paths.get(f)) :
FileAlreadyExistsException
2 - 既存のファイル f、 Files.createDirectory(Paths.get(f)) :
FileAlreadyExistsException
3 - 既存のフォルダー fo、 Files.createDirectory(Paths.get(fo)) :
FileAlreadyExistsException
4 - 既存のフォルダー fo、 Files.createFile(Paths.get(fo)) :
AccessDeniedException
最後が違うのはなぜ?
この質問に関連して、概念的な違いは何ですか?
フォルダーやファイルが「書き込み可能」であることは同じという意味ではありませんか。または、ロックされたファイルまたはフォルダーでは、コンテンツにアクセスできません。
フォルダは、実際には内容リストを含むファイルと考えています。実際にvimで開くことができます。結局のところ、バイナリまたはテキストデータを含むすべてのファイルシステム要素はなぜですか。この 2 つのポリシーにより、事態は複雑になっています。この点で、私は実際に UNIX のファイルの哲学が好きです。フォルダ、ファイル、デバイス ファイル (特殊ファイル) の違いはありません。
そして、階層的なファイルシステム構造は実際には gof4 複合パターンであるため、私は正しいと思います。「ファイルシステム要素」も抽象化しています。
なぜ Java はここで物事を複雑にしているのでしょうか?