텍스트 파일 (인코딩 됨)의 한 줄을 읽고 디코드하고 특정 숫자 집합이 들어 있는지 확인해야하는 bufferedReader
이 있습니다. 특정 숫자 집합을 포함하는지 여부를 확인하는 부분은 괜찮습니다. 그러나 전체 파일, 아래 코드 및 파일에서 읽은 결과를 읽는 데 문제가 있습니다. 아래에 제공되는 읽기 방법과 같이내 bufferedReader는 한 줄만 읽지 않고 전체 파일을 읽습니다. 왜?
코드 :
106382076
78, 97, 109, 101, 32, 116, 101, 115, 116, 32, 99, 97, 114, 100, 78, 111, 32, 52,
48, 52, 54, 48, 52, 57, 51, 57, 32, 67, 117, 114, 114, 101, 110, 116, 32, 66, 9
7, 108, 97, 110, 99, 101, 32, 51, 49, 48, 32, 111, 118, 101, 114, 100, 114, 97,
102, 116, 32, 102, 97, 108, 115, 101, 32, 111, 118, 101, 114, 68, 114, 97, 102,
116, 76, 105, 109, 105, 116, 32, 48, 32, 112, 105, 110, 32, 50, 50, 50, 50
Name test cardNo 404604939 Current Balance 310 overdraft false overDraftLimit 0
pin 2222Name account cardNo 106382076 Current Balance 132 overdraft false overDr
aftLimit 0 pin 4444Name test cardNo 404604939 Current Balance 310 overdraft fals
e overDraftLimit 0 pin 2222Name account cardNo 106382076 Current Balance 132 ove
rdraft false overDraftLimit 0 pin 4444`
이 정상적으로 출력 :
파일에서 읽은 것과prviate static final String UTF8_BOM = "\uFEFF";
String cardNumberStr = "106382076";
String lineFromFile = null;
lineFromFile = bufferedReaderToWrite.readLine();
if (lineFromFile.startsWith(UTF8_BOM)) {
lineFromFile = lineFromFile.substring(1);
}
lineFromFile = lineFromFile.substring(1, lineFromFile.length()-1); //Convert bytes read back to String
for(String s: lineFromFile.split(", ")){ //Split every byte on ,
sb.append((char) Integer.parseInt(s)); //Convert byte to char
}
String textToCheck = sb.toString(); //Convert StringBuilder to String
System.out.println(textToCheck);
System.out.println();
System.out.println(cardNumberStr);
if(textToCheck.contains(cardNumberStr)){
System.out.println(lineFromFile);
}
출력 118,823,210
텍스트 파일의 내용은 folows과 같습니다
[78, 97, 109, 101, 32, 116, 101, 115, 116, 32, 99, 97, 114, 100, 78, 111, 32, 49, 56, 57, 52, 57, 51, 50, 56, 52, 32, 67, 117, 114, 114, 101, 110, 116, 32, 66, 97, 108, 97, 110, 99, 101, 32, 57, 52, 32, 111, 118, 101, 114, 100, 114, 97, 102, 116, 32, 102, 97, 108, 115, 101, 32, 111, 118, 101, 114, 68, 114, 97, 102, 116, 76, 105, 109, 105, 116, 32, 48, 32, 112, 105, 110, 32, 50, 51, 50, 51]
[78, 97, 109, 101, 32, 116, 101, 100, 116, 32, 99, 97, 114, 100, 78, 111, 32, 55, 48, 49, 55, 50, 53, 50, 51, 49, 32, 67, 117, 114, 114, 101, 110, 116, 32, 66, 97, 108, 97, 110, 99, 101, 32, 50, 54, 48, 32, 111, 118, 101, 114, 100, 114, 97, 102, 116, 32, 102, 97, 108, 115, 101, 32, 111, 118, 101, 114, 68, 114, 97, 102, 116, 76, 105, 109, 105, 116, 32, 48, 32, 112, 105, 110, 32, 50, 50, 50, 50]`
가능한 [BufferedReader로 파일의 첫 번째 줄을 읽는 방법?] (http : // stackoverflow.co.kr/questions/9431970/how-to-read-first-of-a-file-with-bufferedreader) –
당신이 무엇을 1 행에 따라 파일입니까? – varun
내가 맞다면 파일이 1 줄의 데이터가 아니라는 것을 확인해야합니다. 즉 줄 구분 기호 (\ r, \ n ...)가 있어야합니다. – Yazan