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

时间:2013-02-18 14:32:13

标签: file grails groovy

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

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.

由于

2 个答案:

答案 0 :(得分:3)

File.separator将为您提供系统相关的分隔符,"/"用于类似unix,"\"用于Windows。 File.separatorChar具有相同的功能,但在char类型中。

此外,如果您可以使用Java 7,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.html http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

答案 1 :(得分:0)

工作解决方案:

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()可以解决问题。