java如果目录不存在则创建目录,检查目录是否存在,如果不存在则创建

使用file.exists()来测试目录的存在是原始帖子中的一个问题 . 如果subDir包含现有文件的名称(而不仅仅是路径),则file.exists()将返回TRUE,但是对setwd()的调用将失败,因为您无法将工作目录设置为指向文件 .

我建议使用file_test(op =“ - d”,subDir),如果subDir是现有目录,则返回“TRUE”,但如果subDir是现有文件或不存在的文件或目录,则返回FALSE . 同样,可以使用op =“ - f”来检查文件 .

此外,如另一条评论中所述,工作目录是R环境的一部分,应由用户控制,而不是脚本 . 理想情况下,脚本应该不会改变R环境 . 为了解决这个问题,我可能会使用options()来存储一个全局可用的目录,我想要所有的输出 .

因此,请考虑以下解决方案,其中someUniqueTag只是程序员定义的选项名称前缀,这使得不太可能存在具有相同名称的选项 . (例如,如果您正在开发名为“filer”的包,则可以使用filer.mainDir和filer.subDir) .

以下代码将用于设置稍后可在其他脚本中使用的选项(从而避免在脚本中使用setwd()),并在必要时创建文件夹:

mainDir = "c:/path/to/main/dir"

subDir = "outputDirectory"

options(someUniqueTag.mainDir = mainDir)

options(someUniqueTag.subDir = "subDir")

if (!file_test("-d", file.path(mainDir, subDir)){

if(file_test("-f", file.path(mainDir, subDir)) {

stop("Path can't be created because a file with that name already exists.")

} else {

dir.create(file.path(mainDir, subDir))

}

}

然后,在需要操作subDir中的文件的任何后续脚本中,您可能会使用以下内容:

mainDir = getOption(someUniqueTag.mainDir)

subDir = getOption(someUniqueTag.subDir)

filename = "fileToBeCreated.txt"

file.create(file.path(mainDir, subDir, filename))

此解决方案使工作目录处于用户的控制之下 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值