2017-10-12 2 views
-1

내 Java 프로그램에서 텍스트 파일을 읽는 데 문제가 있습니다. 내가 수동으로 명령 행에 값을 입력 할 때Bufferedreader 및 InputStreamReader

public static void main(String[] args) throws java.io.IOException { 

     InputStreamReader isr = new InputStreamReader(System.in); 
     BufferedReader br = new BufferedReader(isr); 

     try { 
      long base = Long.parseLong(args[0]); 

      String input = br.readLine(); //read first line till the end of file 

      long list = Long.parseLong(input); 

      convertBase(base, list); 
     } 
     finally { 
      br.close(); 
     } 
} 

이 프로그램은 작동하지만, 내가 사용하려고 할 때 텍스트는 예외가 발생합니다 파일 :

Exception in thread "main" java.lang.NumberFormatException: For input string: "baseconverion.txt" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Long.parseLong(Long.java:589) 
at java.lang.Long.parseLong(Long.java:631) 
at FromDecimal.main(FromDecimal.java:46) 

내가 잘못하고있는 중이 야 무엇인지/실종되지 않음을 .

+0

처리를 시도하기 전에'input'을 인쇄해야합니다. 내용에 놀랄 것입니다. – alfasin

+1

파일 이름을 'long'으로 구문 분석하려고합니다. 해결책 :하지 마십시오. 주의 :'readLine()'은 '파일 끝까지 첫 줄을 읽지 않습니다'. 왜 텍스트 파일을 long 형으로 파싱하려고합니까? – EJP

+0

내가 longs로 구문 분석이 필요합니다. 왜냐하면 십진수를 기본으로 변환하는 방법이 있기 때문입니다. –

답변

0

I 텍스트 파일

를 사용하려고하면 '나는 대신에 다수의 파일 이름을 입력 할 때'당신은 의미한다. 당신은 '텍스트 파일을 사용하려고하지 않습니다'. 콘솔에서 파일 이름을 입력하는 것뿐입니다. 텍스트 파일을 열거 나 읽는 것은 여기에 없습니다. Java는 마술이 아닙니다. 마술처럼 파일 이름이 아니라는 것을 깨닫지 못해 마술처럼 열리지 않습니다.

Java 튜토리얼 및 Javadoc에서 파일 I/O에 대해 읽어야합니다.

소수점을 다른 기준으로 변환하는 경우 Long.parseLong()을 사용하지 않아야합니다. 원래의 행을 변환 메소드에 전달해야합니다.