4

我的 java 程序一直认为每个新文件都不是文件而是文件夹。

我一直在寻找错误,现在它不允许我使用FileWriter. 如果我创建一个新文件,然后检查它是文件还是目录,它说它是一个目录。

我最初创建了一条很长的路径,所以我摆脱了它。我也曾经在一个单独的线程中完成写作,并且也摆脱了它,但问题仍然存在。

如果我创建一个新类,只需一个简单的

java.io.File file = new java.io.File("test.csv");
output.print(file.isDirectory());

这是真的。

但是,我仍然可以使用 javax.imageio.* 保存图形

任何人都可以帮忙吗?

编辑:我使用 eclispe 3.7.2 和 java 1.7.0 ... File.isFile() 为假,File.createNewFile() 失败(java.io.FileNotFoundException(访问被拒绝))。查看我指定的目录时,那里有一个名为 test.csv 的新文件夹。所以它正在创建一个新文件夹,并将其视为一个文件夹,尽管我指定它是一个 csv 文件。我尝试过其他文件类型,甚至没有文件类型。但同样的问题。它认为它是一个文件夹而不是一个文件。这让我很困惑。

4

4 回答 4

9

Javanew File()不会自己创建文件或目录。所以你应该展示你的代码。我怀疑您在file.mkdirs();某个地方有类似的东西-如果此时您file指的是“test.csv”,它将创建一个名为“test.csv”的目录

于 2012-09-18T08:36:11.503 回答
1

在您的示例代码中,您实际上还没有创建文件。为了我们的娱乐,你能不能也打印一下 的值file.isFile()

file.createNewFile() 然后做同样的事情,但首先调用例如,以实际获取文件。

于 2012-09-18T08:37:03.490 回答
0

我认为您遗漏了某些东西,可能您有一个程序所在的目录,该目录与您尝试创建的文件的名称相同,您可以使用isFile()函数对其进行测试,以确保它不是文件和尝试使用 getAbsolutePath()获取路径以本地化设置此目录的位置。

于 2012-09-18T08:37:25.560 回答
0

发现了问题。不出所料,这是我自己的愚蠢,因为我知道它一定是。在将文件名添加到文件路径后,我移动了 File.mkdirs() 方法,使包括文件在内的完整路径成为一个目录。然后我无法写入它,因为它已经被创建为一个目录。

我本可以发誓我在没有 mkdirs() 命令的情况下对其进行了测试,但我猜不是。那好吧。再抓一个愚蠢的东西,而不是正确地删除所有可能的选项。

感谢所有的提示!

于 2012-09-18T13:06:48.680 回答