Чтение аргументов командной строки Java в Unix - PullRequest
1 голос
/ 25 июня 2010

Я пытаюсь прочитать имя папки из командной строки для приложения Java в Unix.

У меня есть скрипт ksh (test.ksh), в котором есть строка:

java SomApp $*

Я пытаюсь выполнить это как показано ниже:

test.ksh ../folder

Но это не удалось; Я имею в виду, что мое Java-приложение говорит, что в "../folder" ничего нет, хотя есть некоторые файлы.

Как читать такие относительные пути в Unix?

Ответы [ 3 ]

1 голос
/ 25 июня 2010

Не совсем понятно, что вы пытаетесь сделать.

- snip -

Если вы хотите, чтобы каждое имя файла в вашей папке использовалось в качестве аргумента вашей команды, попробуйте что-то вроде

java SomeApp `ls ../folder`

... который выполнит команду ls для ../folder и подставит вывод (список файлов в ../folder).

0 голосов
/ 25 июня 2010

Ключевой вопрос: «Ожидает ли приложение Java имя каталога или список имен файлов?»

Если приложение ожидает имя каталога, вы, похоже, дали ему имя каталога.Если ваш сценарий оболочки не сделает что-то неожиданное, например, изменить рабочий каталог (cd), проблема, скорее всего, связана с приложением.

Если приложение ожидает список имен файлов, вы должны передать ему имена файлова не имя каталога.Это может быть просто:

./test.ksh ../folder/*

Или вам может потребоваться быть более избирательным, если папка также содержит подпапки и приложение будет расстроено именами папок, а не именами файлов.

0 голосов
/ 25 июня 2010

Вот простая программа для вывода списка файлов в каталоге, указанном в командной строке.

public static void main(String... argv) {
  File[] list = new File(argv[0]).listFiles();
  for (File f : list) {
    System.out.println(f.getAbsolutePath());
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...