Если вы не перенаправляете что-либо в stdin (System.in), например, «input.txt» в командной строке вашего примера, ваша программа будет ожидать ввода данных в окне консоли.
Возможновам следует реорганизовать вашу программу так, чтобы она ожидала аргумент командной строки (например, проверив это «args.length >= 1
») и интерпретировала его как имя файла для чтения.Если имя файла не указано, вы можете напечатать сообщение об ошибке.Кроме того, вы можете интерпретировать специальное псевдо-имя файла «-
» (одиночный перенос) как «стандартный ввод», так что вы все равно можете перенаправлять данные.
Например:
public static void main(String[] args) {
if (args.length < 1) throw new IllegalArgumentException("no filename given");
InputStream in = ("-".equals(args[0])) ? System.in : new FileInputStream(args[0]);
InputStreamReader inputStreamReader = new InputStreamReader(in);
StreamTokenizer t = new StreamTokenizer(inputStreamReader);
while(t.nextToken() != StreamTolenizer.TT_EOF) {
// ...
Однаконе забудьте закрыть FileInputStream, например, в блоке finally
.