2017-02-02 4 views
1

Если я сделатьКак ввести текстовый файл в программу java через терминал (например, как это делается на C++)?

$ java ProgramName string1 string2 string3

из Linux терминала, ProgramName получает string1 string2 string3 через main(String arg[]) с использованием arg[i], и все хорошо.

Вот что я хочу сделать: Вместо того, чтобы вводить string1 string2 string3 в терминале, я хочу, чтобы ввести

$ java ProgramName < input.txt

где "input.txt" содержит string1, string2 и string3

Редактировать: «input.txt» имеет одно слово на отдельной строке с «enter» в конце строки

string1 

string2 

stringn 

Это может быть сделано C++; это можно сделать аналогично в Java?

+0

Указывает ли ваше имя_программы на файл в файле arg [] и открывает этот файл для чтения строк? если нет, то это не сработает. –

+3

Чтобы сделать то, что вы хотите, попробуйте прочитать 3 строки из System.in, где доступен стандартный ввод Unix (который вы перенаправляете в файл). –

ответ

1

Вы можете сделать:

export parameters=`cat file.txt` 
java programname $parameters 

примечанию обратный ` (не ')

или даже:

java programname `cat file.txt` 
+0

Оба решения отлично работали – greg

0

Поскольку вы перенаправлять файл на стандартный ввод вашей программы, вы можете попробовать следующее:

Scanner in = new Scanner(System.in); 
String line = new String(); 
while(in.hasNext())//while there are lines on the file 
{ 
    line = in.nextLine();//read the line 
    //do stuff here 
} 
0

Пожалуйста, используйте следующую команду:

java MyProg "$(cat file.txt | tr '\n' ' ')" 

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

+0

Это работает, когда «input.txt» имеет только 1 строку в 1 строке, но string2 и stringn не были прочитаны ProgramName. Связано это с «Если его не работает, проверьте, правильно ли определены аргументы в исходном файле». – greg

+0

Я отредактировал свой ответ, попробуйте предоставленное решение. – eg04lt3r

+0

извините, но все равно не работает – greg