в Java, метод main
получает массив String в качестве аргумента, как вы, вероятно, заметили. Вы можете присвоить параметру args
другое имя, но оно наиболее часто используется.
массив args
содержит значения того, что пользователь набрал при запуске вашей программы, после имени класса. например, чтобы запустить класс с именем Foo, пользователь должен набрать:
[user @ desktop ~] $ java Foo
все, что пользователь вводит после имени класса, считается параметром. например:
[user @ desktop ~] $ java Foo bar baz
теперь ваша программа получила два параметра: bar и baz . эти параметры хранятся в массиве args
. как обычный массив Java, первый параметр может быть получен путем доступа к args[0]
, второй параметр может быть получен путем доступа к args[1]
и так далее. если вы попытаетесь получить доступ к недопустимой позиции (когда пользователь не набрал то, что вы ожидали), этот оператор выдаст ArrayIndexOutOfBoundsException
, как это было бы с любым массивом. Вы можете проверить, сколько параметров было введено с помощью args.length
.
Итак, вернемся к вашему вопросу. пользователь может сообщить имя файла в качестве параметра командной строки, и вы можете прочитать это значение через аргумент метода main
, обычно называемого args
. Вы должны проверить, действительно ли он что-то набрал в качестве аргумента (проверяя длину массива), и если все в порядке, вы получаете доступ к args[0]
, чтобы прочитать то, что он напечатал. затем вы можете создать File
объект на основе этой строки и делать то, что вы хотите с ним делать. всегда проверяйте, набрал ли пользователь ожидаемое количество параметров, в противном случае вы получите исключение при доступе к массиву.
вот полный пример использования параметров командной строки:
public class Foo {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("no arguments were given.");
}
else {
for (String a : args) {
System.out.println(a);
}
}
}
}
этот класс будет анализировать параметры, сообщенные пользователем. если он ничего не печатал, класс выведет сообщение «аргументы не заданы». если он сообщит любое количество параметров, эти параметры будут показаны на экране. поэтому, запустив этот класс с двумя примерами, которые я дал для этого ответа, вы получите:
[user @ desktop ~] $ java Foo
аргументов не было.
[user @ desktop ~] $ java Foo bar baz
бар
баз