我正在 google colab 上运行 java 代码,其中涉及创建多个文件夹并在这些文件夹中存储文本文件。
所以我想确保该文件夹已成功创建,然后才能在其中添加文本文件并写入。
在 google colab 中运行我的代码给我带来了与创建文件夹相关的错误,但该文件夹不是 发生在我的设备上,就像有时会创建文件夹有时不会。
我的代码的简化是:
while(!writtenToTextFile){
//blocks that take a lot of time
File folder=new File("folder");
if(folder.mkdir()){
//create the text file to store data
writtenToTextFile=true;
}
}
如何等到文件夹创建一段时间(例如 30 秒)后,代码才运行到另一轮 while 循环,以避免执行耗时较长的块?
如何等待文件夹创建完成?
当您使用
java.io.File.mkdir()
或.mkdirs()
时,无需等待。这些方法在其工作完成之前不会返回,无论成功与否。例如,File.mkdir()
的 API 文档部分表示:
此方法也可能会抛出异常,但在没有成功创建目录的情况下不会返回退货:
true
当且仅当目录已创建;false
否则
true
。另请注意,如果该方法返回
false
,则可能仅意味着
File
对应于已存在的目录,尽管还有其他可能性。
在 google colab 中运行我的代码会出现与创建文件夹相关的错误,而这些错误在我的设备上没有发生,例如有时会创建文件夹,有时不会。那么,也许您应该提出一个新问题,重点关注可以重现此类错误的特定代码,以及可以执行此操作的环境的详细信息。
如何等到文件夹创建一段时间(例如 30 秒)后,代码才运行到另一轮 while 循环,以避免执行耗时较长的块?假设 colab 提供了一个 Java 实现,其标准库的行为如文档所述,您不能等待目录被创建,因为在
File.mkdir()
返回之前它必须已经创建(或者尝试失败)。您可以通过
Thread.sleep()
添加任意延迟,但这似乎无法解决您正在观察的任何问题。