2014-01-15 4 views
-1

У меня в моем коде жестко заданное имя для текстового файла, который я читаю.Прочитать имя файла из аргумента командной строки

String fileName = "test.txt"; 

Однако теперь я должен использовать аргумент команды, как так:

text.java arg1 arg2 arg3 (can be any amount) < test.txt 

Может кто-нибудь мне помочь, пожалуйста?

У меня есть аргументы без проблем, просто не уверен в файле. Спасибо

Я попытался:

String x = null; 
     try { 
      BufferedReader f = new BufferedReader(new InputStreamReader(System.in)); 

      while((x = f.readLine()) != null) 
      { 
       System.out.println(x); 
      } 
     } 
       catch (IOException e) {e.printStackTrace();} 
       System.out.println(x); 
       } 

Однако мое приложение теперь висит на Readline, любые идеи для меня, чтобы попробовать, пожалуйста?

+0

Покажите нам, как вы получаете аргументы (код). – MariuszS

+0

Таким образом вы передаете содержимое test.txt только стандартного ввода, а не имя файла. –

+0

@GaborBakos ах, что имеет больше смысла, я написал код, чтобы прочитать его на основе имени. Спасибо –

ответ

2

Это происходит потому, что файл не передается в качестве аргумента, но конвейеру в качестве стандартного ввода.

Если это предполагаемое использование (конвейерный содержимого файла), то вы просто должны прочитать его из System.in (in означает стандартный ввод):

public static void main(String[] args) throws IOException { 
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
    String firstLine = in.readLine(); 
    // etc. 
} 

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

+0

Кажется, что он висит на readLine, хотя ошибки нет, не могли бы вы представить, почему он это сделает? –

0

Передайте файл как имя файла в свою программу, а затем откройте этот файл и прочитайте его.

Смежные вопросы