2011-05-27 62 views
0

在我的項目中,我需要分離文件夾中的所有.java文件並將其粘貼到單獨的文件夾中。我想通了,下面提到的命令適用於這個目的使用JAVA在命令行中實現

for /f "delims==" %k in ('dir C:\Project\downloads\*.java /s /b') do copy "%k" C:\Project\javaRepo 

在上面的命令,源文件夾:C:\項目\下載\
目標文件夾複製所有.java文件:C:\項目\ javaRepo

我試圖在Java中使用下面的命令,

Runtime rt = Runtime.getRuntime(); 
Process proc = rt.exec(.....); 

但我並不清楚如何把「爲」命令作爲rt.exec參數。

我試着創建一個批處理文件如下,但它不起作用。

@echo off 
for /f "delims==" %k in ('dir C:\Project\downloads\*.java /s /b') do copy "%k" C:\Project\javaRepo 

如果我的方法是正確的,還是有其他更好的選擇,你能告訴我嗎? 建議/意見是最受歡迎的。

+1

你爲什麼要做到這一點在Java中的任何原因? – 2011-05-27 03:09:55

回答

0

謝謝你們提供了新的建議..我也研究了它們。 不過,我能以後實現相同的命令行代碼...我的代碼如下

public class copyJava { 
    public static void main(String args[]) throws IOException, 
      InterruptedException { 
     Process p = null; 
     String[] command = { 
       "cmd", 
       "/c", 
       "for /f \"delims==\" %k in ('dir C:\\Project\\workspace\\downloads\\*.java /s /b') do copy \"%k\" C:\\Project\\workspace\\javaRepo" }; 
     ProcessBuilder copyFiles = new ProcessBuilder(command); 
     copyFiles.redirectErrorStream(true); 
     p = copyFiles.start(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       p.getInputStream())); 
     String line; 
     do { 
      line = reader.readLine(); 
      if (line != null) { 
       System.out.println(line); 
      } 
     } while (line != null); 
     reader.close(); 
     p.waitFor(); 
    } 
} 

現在它好.. :)

+1

這樣你就可以使一個獨立於平臺的程序平臺依賴於它。 – 2011-05-30 18:29:01

1

如果你在使用Java,你不需要所有這些技巧。只用於循環和複製文件。您可以通過exec爲每個文件調用 副本,或者您可以使用純Java進行復制,這將會更好。

1

想象一個Java「大眼夾」樂於助人的回形針:

它看起來就像你試圖組織一個Java項目!

也許你應該使用構建工具,如antgradle。這些可以以非常緊湊和方便的方式完成這些低級任務。

如果你要必須從Java做起,你甚至可以使用ant作爲一個庫,它可以爲你做這些類型的操作。

或者如果您願意重新組織您的項目並遵循約定maven也可能是一個更自動的解決方案。