2013-03-18 2 views
0

매우 큰 바이트 배열이 있습니다. 문자열을 찾을 때까지 뒤로 읽으려고합니다. BEGIN : VCARD 또는 END : VCARD 등. 가능한 한 줄 단위로 배열에 액세스하고 싶습니다.자바에서 바이트 배열 백 워드 읽기

+0

나는 아직 아무 것도 시도하지 않았지만 단지 해결책을 생각하고있었습니다. 문자로 문자를 읽는 것은 어렵다고 생각했습니다. 다른 해결책? –

+0

바이트 배열은 문자열이 아닙니다. 문자열을 찾고 * lines *으로 읽는 것에 대해 이야기하고 있다면, 이것을 텍스트 데이터로 변환해야합니다. 이 "매우 큰"바이트 배열이 얼마나 큽니까? –

+0

@Jon Ya. 나는 특정 문자열을 검사하는 동안 그것을 String으로 변환 할 것이다. –

답변

3

String.lastIndexOf(String str, int fromIndex)을 사용하면 간단한 코딩 문제 여야합니다. 나머지는 당신에게 달렸습니다.


바이트 배열을 하나의 문자열에 그것을 돌리면 다음, 너무 많은 메모리를 사용하는 배열을 뒤로 스캔 라인의 경계를 찾기 위해, 각 라인의 문자열을 생성하고, lastIndexOf를 사용하는 것입니다 너무 큰 경우 각 줄 문자열에.

+3

OP를 위해 이것을 코드화하려는 유혹에 저항하십시오. 그는 분명히 스스로하는 경험이 필요합니다. –

2

성능이 그다지 중요하지 않은 경우 먼저 바이트 배열 생성자 (new String (byte [] 바이트))를 통해 문자열을 작성한 다음 String.lastIndexOf (String str)를 친구로 사용할 수 있습니다. 그것은 당신에게 주어진 문자열의 마지막의 위치를 ​​줄 것입니다.

+0

바이트 배열의 크기가 약간 큽니다. 그래서 나는 이것을 피하려고 노력하고있다. –