以下代码显示了我遇到的问题:
// Assume working directory is empty.
File foo = new File("asdf");
foo.createNewFile(); // returns true, creates file "asdf" in working directory.
File bar = new File("asdf");
bar.mkdir(); // returns false
当我尝试创建一个与已存在的文件同名的目录时,“mkdir()”函数返回false。 当以相反的顺序执行操作时会发生类似的问题;当首先创建目录时,“createNewFile()”函数返回false。
据我所知,当第二个“File”对象初始化时,它“找到”在前一行创建的文件,因此“bar.exists()&& bar.isFile()”为真。
请有人详细说明如何创建与现有文件夹同名的文件,反之亦然。
谢谢, 哈里·
答案 0 :(得分:9)
这是不可能的,因为您的操作系统(文件系统)不允许它。这不是Java问题。
答案 1 :(得分:3)
您无法创建具有相同名称且位于同一文件夹中的文件和文件夹。操作系统不允许您这样做,因为该名称是该文件/文件夹对象的ID。
假设有可能,我们会有这样的事情:
foo (folder)
|- bar (folder)
|- bar (file)
当你得到一个命令“open foo / bar”时,你如何决定打开哪一个? 如果您不能仅仅根据这些信息做出决定,那么操作系统应该如何为您做出决定?
答案 2 :(得分:2)
这是不可能的,因为它是您的操作系统不允许它。您可以随时尝试,如果它无法重命名文件夹(或文件):
File bar = new File("asdf");
if(!bar.mkdir()) {
// rename your folder or file
bar.mkdir();
}
答案 3 :(得分:1)
// Assume working directory is empty.
File foo = new File("asdf.txt");
foo.createNewFile(); // returns true, creates file "asdf" in working directory.
File bar = new File("asdf");
bar.mkdir(); // returns false
以上代码应该适合您。无论何时创建文件,都要给出一些扩展名,以便区分文件和目录。