게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바의 StringTokenizer 예외 발생 관련 도움을 얻고 싶습니다
게시물ID : programmer_20767짧은주소 복사하기
작성자 : 배고픈곰돌이
추천 : 0
조회수 : 995회
댓글수 : 2개
등록시간 : 2017/06/06 10:31:58
옵션
  • 본인삭제금지
FileReader, BufferedReader를 이용해 외부 txt 파일로부터 모든 문장을 읽어와

StringTokenizer로 모든 문장을 라인 단위("\n" 기준)로 쪼개어, 그 쪼갠 문장 하나 하나를 String 배열에 쌓은 후

외부 txt 파일 모든 문장 중 마지막 5줄(끝에서 5줄)만 출력하고자 짜 본 코드입니다.

그런데, 당연하겠지만 다른 String 데이터의 StringTokenizer를 이용할 때는 아무 탈 없이 실행되는데

BufferedReader로 txt 파일의 모든 문장을 저장한 String 변수인 line에서 StringTokenizer를 사용하면 예외가 발생해서,

왜 이런 건지 이유라도 알고 싶어서 글을 써 봅니다. ㅠㅠ

전체 코드와, 발생한 예외 첨부하겠습니다. 미리 감사하다는 말씀 드립니다!

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

/**
* Created by son-wonhui on 2017. 6. 6..
*/

//파일을 읽어서 마지막 다섯 줄만 표준 출력으로 출력하는 프로그램을 작성한다.

public class FileInputTest {
public static void main(String[] args) {
BufferedReader bReader = null;
int numOfLine = 0;
String line = null;
int count = 0;
String[] los = null;
StringTokenizer st;

try {
bReader = new BufferedReader(new FileReader("src/InputTest.txt"));
while((line = bReader.readLine()) != null) {
System.out.println(line);
if(line.matches(".*\n*.")) {
//Line 수 계산
numOfLine++;
}
}
System.out.println("numOfLine : " + numOfLine);

//문자열 분리 후 배열에 삽입
st = new StringTokenizer(line, "\n");

while(st.hasMoreTokens()) {
los = new String[numOfLine];
los[count] = st.nextToken();
count++;
}

count = numOfLine - 5;
//마지막 5줄을 콘솔에 출력
while(count < numOfLine) {
System.out.println(los[count]);
count++;
}

} catch(Exception e) {
e.printStackTrace();
} finally {
try {
bReader.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}

java.lang.NullPointerException 	at java.util.StringTokenizer.<init>(StringTokenizer.java:199) 	at java.util.StringTokenizer.<init>(StringTokenizer.java:221) 	at FileInputTest.main(FileInputTest.java:38) : st = new StringTokenizer(line, "\n"); 부분입니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호