Есть ли в любом случае, чтобы дать команду командной строки cmd в java

#java #file-io #path

#java #file-io #путь

Вопрос:

Я пытаюсь запустить команду командной строки cmd с помощью Java, у меня есть путь к источнику и путь назначения, и я переворачиваю изображение. Перевернутое изображение должно быть скопировано в пункт назначения. Изображение копируется, но не перевернутое изображение. Я поделюсь своим кодом ниже, пожалуйста, дайте мне знать, если понадобится что-нибудь еще.

 @Test
public void executeCommandJpgDifferentPaths() throws IOException{
    Path resourceDirectory = Paths.get("src\main\resources\download.jpg");
    Path destination = Paths.get(demoFolder.getAbsolutePath(),"download_output.jpg");
    String command = "magick convert -flip resourceDirectory destination " ;
    Boolean output = flipImplementation.executeCommand(command);
    Files.copy(resourceDirectory,destination);
    Assert.assertTrue(output);
    try {
        Thread.sleep(123456789L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
  

Ответ №1:

Я пробовал это, используя ‘destinationDirectory.resolve’.Нам нужно использовать, как показано ниже :

  @Test
public void executeCommandJpgDifferentPaths() throws IOException{
    Path resourceDirectory = Paths.get("src\main\resources");
    Path resourcePath = resourceDirectory.resolve("download.jpg");
    Path destinationDirectory = Paths.get(demoFolder.getAbsolutePath());
    Path destinationPath = destinationDirectory.resolve("download_output.jpg");
    String command = "magick convert -flip "   resourcePath   " "   destinationPath ;
    Boolean output = flipImplementation.executeCommand(command);
    Assert.assertTrue(output);
    try {
        Thread.sleep(123456789L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
  

Ответ №2:

Вы используете простую строку. Но вы должны использовать переменные внутри.

Заменить

 String command = "magick convert -flip resourceDirectory destination " ;
  

с

 String command = "magick convert -flip "   resourceDirectory.getAbsolutePath()   " "   destination.getAbsolutePath();
  

Комментарии:

1. Спасибо за ответ, когда я использую resourceDirectory.getAbsolutePath(), он просит меня переименовать ссылку. Я попробовал с помощью ‘ resourceDirectory’, он выдает исключение, как показано ниже

2. C:UserschitrAppDataLocalTempjunit8466679054766850042ImageMagickoutput.jpg java.nio.файл. Исключение FileAlreadyExistsException: C:UserschitrAppDataLocalTempjunit8466679054766850042ImageMagickoutput.jpg в sun.nio.fs.WindowsFileCopy.copy(WindowsFileCopy.java:124) в sun.nio.fs.WindowsFileSystemProvider.copy(WindowsFileSystemProvider.java:278) в java.nio.file. Files.copy(Files.java:1274) «файл на самом деле не находится в том месте»