0

あるフォルダー内のすべてのファイルを別のフォルダーに移動する次のコードがあります。

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 を使用する必要があります。

ありがとう

4

2 に答える 2

3

File.separator"/"UNIXライクおよび"\"ウィンドウ用のシステム依存のセパレータを提供します。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

于 2013-02-18T14:35:43.477 に答える
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()を使用するとうまくいきます。

于 2013-02-18T15:42:55.757 に答える