2

以下代码显示了我遇到的问题:

// 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。

我知道当第二个“文件”对象被初始化时,它会“找到”在前一行创建的文件,因此“bar.exists() && bar.isFile()”是真的。

请有人详细说明如何创建与现有文件夹同名的文件,反之亦然。

谢谢,哈里

4

4 回答 4

9

这是不可能的,因为您的操作系统(文件系统)不允许这样做。不是这样的Java问题。

于 2012-04-19T15:57:03.263 回答
3

您不能在同一个文件夹中创建同名的文件和文件夹。操作系统不允许您这样做,因为名称是该文件/文件夹对象的 id。

假设这是可能的,我们会有这样的事情:

foo (folder)
|- bar (folder)
|- bar (file)

当您收到“open foo/bar”命令时,您将如何决定打开哪一个?如果您不能仅凭这些信息做出决定,那么操作系统应该如何为您做出决定?

于 2012-04-19T16:01:24.043 回答
2

这是不可能的,因为您的操作系统不允许这样做。您可以随时尝试,如果失败重命名文件夹(或文件):

File bar = new File("asdf");
if(!bar.mkdir()) {
    // rename your folder or file
    bar.mkdir();
}
于 2012-04-19T16:02:18.380 回答
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

上面的代码应该适合你。每当您创建文件时,请提供一些扩展名,以便可以区分文件和目录。

于 2015-02-19T09:04:08.087 回答