我有以下代码,可以将一个文件夹中的所有文件移动到另一个文件夹:
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()就可以了。