2011-09-22 5 views
0

이것은 매우 간단해야하지만 어떤 이유로이 프로그램이 .txt 파일에서 인수를 가져 와서 출력 할 수 없습니다. 내 코드는 다음과 같습니다.우분투 : Java의 .txt 파일에서 리디렉션

public class Lab2 { 

static Scanner input = new Scanner(System.in); 

public static void main(String[] args) 
{ 
    Lab2_CLA.Lab2_CLA(args);   
} 
} 

public class Lab2_CLA { 

public static void Lab2_CLA(String[] data) 
{ 
    System.out.printf("%s, %s: %s%n", data[1], data[0], data[2]); 
} 
} 

나는 코드를 컴파일하고 터미널을 통해 인수를 제공하면 작동합니다. 예 :

를 입력하면 "자바 LAB2/LAB2 홍길동 12345678"

인쇄합니다 : "미상, 존 : 12345678는"그러나

, 어떻게 내가이 데이터를 읽을 수 있습니다 .txt 파일에 "java lab2/Lab2 < input.txt"을 입력하면됩니다. 나는이 작업을 수행 할 때마다, 나는 다음과 같은 오류가 발생합니다 :

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
at lab2.Lab2_CLA.Lab2_CLA(Lab2_CLA.java:12) 
at lab2.Lab2.main(Lab2.java:34) 

답변

4

입력 리디렉션되지는 명령 줄 매개 변수에 프로그램의 표준 입력에 파일 (표준 입력 파일)을 전송한다. 유닉스 모두에서 당신은 역 따옴표 연산자를 사용하여 원하는 효과를 얻을 수 있습니다 : 한마디로

java lab2/Lab2 `cat input.txt` 

에서, 역 따옴표 사이에있는 텍스트가 실행되며, 실행 결과는 그 자리에 삽입됩니다.

편집 (OP의 편집에 응답) :

당신 때문에 프로그램이 아직 하드 주소 요소 명령 줄 매개 변수를하지 않는 리디렉션 경계 부족 예외를 얻을 수 0 1과 인수 2 정렬.

어떤 이유에서든 백틱 기반 솔루션을 사용할 수없는 유일한 옵션은 프로그램을 수정하여 표준 입력 (기술 표시는 Java file input as command line argument)이거나 인수로 파일 이름을 수락하고 해당 파일을 읽는 것입니다 .

+0

예를 들어'cat'을'echo'가 아니라고 생각합니다. – tobyodavies

+0

@tobyodavies 실제로 고맙습니다. – fvu

관련 문제