Реализация в командной строке с использованием JAVA - PullRequest
0 голосов
/ 27 мая 2011

В моем проекте мне нужно отделить все файлы .java в папке и вставить их в отдельную папку.Я выяснил, что указанная ниже команда работает для этой цели

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

В указанной выше команде исходная папка: C: \ Project \ downloads \
папка назначения для копирования всех файлов .java: C: \ Project \ javaRepo

Я пытался использовать следующую команду в JAVA,

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

Но мне не ясно, как поставить команду "for" в качестве аргумента для rt.exec.

Я попытался создать командный файл следующим образом, но он не работает.

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

Можете ли вы дать мне знать, если мой подход правильный, или есть какая-то другая лучшая альтернатива?Предложения / идеи приветствуются.

Ответы [ 3 ]

1 голос
/ 27 мая 2011

Представьте себе Java "clippy", полезную скрепку:

Похоже, вы пытаетесь организовать проект Java!

Возможно, вам следует использовать инструмент для сборки, такой как ant или gradle . Они могут выполнять эти задачи низкого уровня очень компактным и удобным способом.

Если вы должны сделать это из Java, вы даже можете использовать ant, скажем, как библиотеку, которая может выполнять такие операции за вас.

Или, если вы хотите реорганизовать свой проект и следовать соглашениям maven также может быть более автоматическим решением.

1 голос
/ 27 мая 2011

Если вы находитесь на Java, вам не нужны все эти хитрости. Просто используйте для цикла и копирования файлов. Ты можешь позвонить скопируйте через exec для каждого файла, или вы можете копировать с использованием чистой Java, что было бы намного лучше imho.

0 голосов
/ 30 мая 2011

Спасибо, ребята, за новые предложения. Я тоже их изучил. Однако позже я смог реализовать тот же код командной строки ... Мой код выглядит следующим образом

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();
    }
}

Теперь работает хорошо .. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...