2013-03-08 5 views
1

Я пытаюсь создать программу, которая читает из текстового файла. Я использую cmd и введите javac fileName.java для компиляции, затем java -cp . fileName, чтобы запустить его. Тем не менее, я хочу запустить программу, написав java fileName textInput.txt. Я уже создал программу; но я должен указать имя текстового файла в коде.Как указать текстовый файл в командной строке

Мне сказали, что args[0] должно быть именем текстового файла, но я не уверен, как это реализовать.

Я не разместил свой код, но скажите, если мне нужно.

+1

Для более аргументов сложных командной строки можно использовать Commons CLI: http://commons.apache.org/proper/commons-cli// –

ответ

5

Если у вас есть класс, как показано ниже

public class YourClass { 
    public static void main(String[] args) { 
     String fileName = args[0]; // would contain "textInput.txt" 
     // work with fileName 
    } 
} 

запустить программу как java YourClass textInput.txt.

В массиве String args содержатся любые аргументы, которые вы передаете при запуске команды java. Это может быть что угодно, не ограничиваясь именами файлов. Как отмечает Bailey S, эти аргументы обозначаются на основе токенизации вашей оболочки. Индекс начинается с 0.

 java YourClass arg1 arg2 arg3 
        ^^^
index:     0 1 2 
+1

Это массив аргументов командной строки обозначены на белом фоне. Подобно 'string.split (" \ s ")'; –

+0

Спасибо! Я изменил свой код, и он работает так, как я хочу. – Chase

+0

Этикетки выполняются вашей оболочкой (bash, Windows cmd shell и т. Д.), Поэтому это не просто пробелы. Например, «java YourClass» «Hello, World» «обычно дает вам только один аргумент, а не два. –

3
class fileName { 

    public static void main(String[] args) { 

     String filePath = args[0]; 
     //but check if args[0] exist. 

    } 
} 
3

Основной метод любой программы Java получить массив String значений, которые являются аргументы, переданные через командную строку:

java javaClass.class arg0 arg1 arg2 

А вот как вы получаете код:

public static void main(String[] args) 
{ 
    System.out.println(args[0]); // prints arg0 
    System.out.println(args[1]); // prints arg1 
    System.out.println(args[2]); // prints arg2 
} 

Лучше проверить количество аргументов ред перед их использованием:

if(args.length < 0) System.out.println("No arguments are passed!"); 
Смежные вопросы