2014-01-07 3 views
0

Я создал Java-программу в Intellij Idea.Компиляция java-файла и передача файла в stdin дает ошибку

В этой программе у меня есть функция для чтения файла.

public static void main(String[] args) throws IOException { 
    \\Some code 
    readInput(args); 
    \\Some code 

} 

private static void readInput(String[] args) throws IOException { 
    \\Some code 
    BufferedReader br = new BufferedReader(new FileReader(args[0])); 
    \\Some code 
} 

Я установил Intellij файл в качестве аргумента. Файл input.txt.

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

Теперь я пытаюсь добиться того же, используя командную строку Windows.

Мои файлы находятся в пакетах. Что-то вроде этого

...\Dir\packageOne\ClassOne.java

...\Dir\packageOne\ClassTwo.java

...\Dir\packageOne\ClassThree.java

...\Dir\packageTwo\ClassFour.java

...\Dir\packageTwo\ClassFive.java

`...\Dir\input.txt

Сначала я начать компиляции всех классов с помощью этой команды:

...\Dir>javac packageOne/*.java packageTwo/*.java 

А потом попробуйте запустить файл так:

...\Dir>java packageOne/ClassOne < "...\Dir\input.txt" 

Я Gething java.lang.ArrayIndexOutOfBoundsException: 0 в функции readInput(args); на линии BufferedReader br = new BufferedReader(new FileReader(args[0]));

Разве это не способ скомпилировать файлы и передать файл с помощью командной строки?

+1

вынуть '<' operator – epoch

+1

«<» не требуется .. Его не Linux .. Ур с использованием Windows .. – TheLostMind

+0

@epoch. Благодарю. Ты прав. Разве вы не хотите дать ответ, так как вы первым предоставили мне объяснение? – Favolas

ответ

1

Чем меньше оператора не требуется для прохождения ввода, вместо args будет содержать передаваемые аргументы, разделенные пробелом:

java MyClass 1 2 3 4 5 

args теперь будет содержать:

args[0] -> "1" 
args[1] -> "2" 
args[2] -> "3" 
etc... 

, так что вам просто нужно удалить символ <

1

Вам не нужен символ «<». Просто поместите

java ClassName inputFileLocation 
Смежные вопросы