2012-04-27 4 views
0

"ABCDEabcde ..... XYZxyz"와 같은 문자 시퀀스가 ​​포함 된 큰 파일이 있습니다. 이제, 그것의 하위 시퀀스를 추출하고 싶습니다. 예를 들어 10 번째 문자에서 50 번째 문자까지 15 번째 문자에서 55 번째 문자로 말하십시오 (모든 하위 시퀀스는 길이가 같고 시작 위치는 항상 증가합니다). 아무도 나를 자바에서 빠른 방법으로 어떻게 도와 줄 수 있습니까? 이파일에서 하위 시퀀스 추출 - Java - Fast Way

BufferedReader br = new BufferedReader(new FileReader(<FileName>), int size); 

그냥 입력 버퍼 크기와 계속 확인 :

+0

제안 사항은 더 빠릅니다. – Arpssss

+1

우리는 무엇을 고르고 있습니까? 너 뭐 해봤 니? 예상되는 런타임 환경은 무엇입니까? 입력 파일의 크기 제한은 얼마입니까? 서브 시퀀스 크기에 대한 제한 사항은 무엇입니까? –

+0

@ColinD 예를 들어 파일 내용 "My Name is"과 같이 고정 길이의 하위 시퀀스를 선택하고 위치 1에서 3까지 하위 시퀀스, 즉 "My"를 추출하려고합니다. – Arpssss

답변

0

로 MappedByteBuffer 및 액세스 파일을 사용할 수 있습니다 그 청크 혼자서 subStrings에 대해. 아무것도 발견되지 않으면 버리고 다음 청크로 가십시오.

+0

사실, 생각했습니다. 그러나 느려야합니다. 이 작업을 수행하기 위해 일반적인 Buffered Reader, File Reader 등보다 빠른 접근 방법을 찾고 있습니다. 더 빨리 내장 된 것을 말할 수 있습니다. – Arpssss

0

당신은 왜 이런 일을하려고하지 byte 버퍼

http://docs.oracle.com/javase/7/docs/api/java/nio/MappedByteBuffer.html

RandomAccessFile raf = new RandomAccessFile(....); 
FileChannel fc = raf.getChannel(); 

MappedByteBuffer mmap = fc.map(READ_ONLY, 0, fc.size()); 
+0

고마워요. – Arpssss

+0

이렇게하면 전체 파일을 'ByteBuffer'에로드하고 가비지 수집기가 호출 될 때까지 저장합니다. – noMAD

+0

난 그냥 확인, 메모리에 전체 파일을로드합니다. 나를 위해 그것은 불가능합니다. 그러나, 고마워. – Arpssss