我有以下代码将一个文件夹中的所有文件移动到另一个文件夹:
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.
由于
答案 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()可以解决问题。