java Runtime.getRunTime () .exec и подстановочные знаки?

я пытаюсь удалить файлы спама при помощи

Process p = Runtime.getRuntime().exec();

это хорошо работает, пока я не использую подстановочные знаки, т.е. это работает:

Process p = Runtime.getRuntime().exec("/bin/rm -f specificJunkFile.java");

в то время как следующее не отбрасывает назад "Такого файла или каталога":

Process p = Runtime.getRuntime().exec("/bin/rm -f *.java");

я должен смочь сделать все хорошие вещи, как обрисовано в общих чертах здесь, правильно?

11
задан Andrew Thompson 4 July 2012 в 04:39
поделиться

2 ответа

Могу ли я предложить, чтобы вы позволили Java сделать это для вас?

  • Используйте файл.ListFiles (), чтобы получить список файлов
  • Использовать файл. Get.getnname (). Содержит (строка ) Чтобы отфильтровать их в случае необходимости
  • , итерации на массиве, выполняющий файл.delete ()

Преимущество: Улучшенная переносимость, экономит стоимость Exec ()

8
ответ дан 3 December 2019 в 02:30
поделиться

Это подстановочные знаки Bash. Они интерпретируются в рамках Bash. Вы используете RM напрямую, так что нет оболочки для интерпретации * как «все файлы».

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

RuntimeTime.getruntime (). EXEC ("/ PATH-TO / BASH -C \" RM * .foo \ "")

9
ответ дан 3 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: