基于平台创建动态文件路径



我有以下代码,可以将一个文件夹中的所有文件移动到另一个文件夹:

for(File file: sourcePath.listFiles()){
    log.debug("File = " + sourcePath + "\" + file.getName())
    File f1 = new File("C:\\" + sourcePath + "\" + file.getName())
    f1.renameTo(new File("C:\\" + destinationPath + "\" + file.getName()))
}

这在本地运行良好,就像我在windows机器上一样。

显然,当我将应用程序部署到unix测试/生产服务器时,它将不起作用。

这在Grails 2.1.0项目中。

这样做不需要使用条件语句吗?(一些开发人员将在本地使用linux)。

更新

我必须使用Java 6。

感谢

File.separator将为您提供一个依赖于系统的分隔符,"/"用于类unix,""用于windows。CCD_ 4与CCD_。

此外,如果您可以使用Java7,NIO2的Path API提供了更方便、更干净的方法:

Path source = Paths.get("C:", sourcePath, file.getName());
Path target = Paths.get("C:", targetPath, file.getName());
Files.move(source, target);

有关文档,请参阅以下页面:

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Paths.htmlhttp://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

工作解决方案:

File sourcePath = new File(config.deals.imageUploadTmpPath + "/test_" + testId)
File destinationPath = new File(config.deals.imageUploadPath + "/" + testId)
for(File file: sourcePath.listFiles()) {
    log.debug("File = " + sourcePath.getAbsolutePath() + File.separator + file.getName())
    File f1 = new File(sourcePath.getAbsolutePath() + File.separator + file.getName())
    f1.renameTo(new File(destinationPath.getAbsolutePath() + File.separator + file.getName()))
}

使用File.getAbsolutePath()就可以了。

相关内容

  • 没有找到相关文章

最新更新