한 줄씩 파일을 읽습니다. 파일은 CipherOutputStream
으로 인코딩되고 나중에 DeflaterOutputStream
으로 압축됩니다. 이 파일은 러시아 문자와 같은 UTF-8 문자로 구성 될 수 있습니다.BufferedReader가 읽은 파일에서 오프셋을 가져 옵니까?
실제로 읽은 파일의 오프셋 또는 br.ReadLine()
명령으로 읽은 바이트 수를 가져 오려고합니다. 문제는 파일이 암호화되고 압축되어 있기 때문에 읽기 문자열 길이가 파일의 읽기 바이트 수보다 큽니다.
InputStream fis=tempURL.openStream(); //in tempURL I've got an URL to download
CipherInputStream cis=new CipherInputStream(fis,pbeCipher); //CipherStream
InflaterInputStream iis=new InflaterInputStream(cis); //InflaterInputStream
BufferedReader br = new BufferedReader(
new InputStreamReader(iis, "UTF8")); //BufferedReader
br.readLine();
int fSize=tempURL.openConnection().getContentLength(); //Catch FileSize
이렇게하면 읽은 바이트 수가 계산됩니다. 읽은 행의 실제 바이트 수는 이보다 적을 것입니다 (그러나이 경우 가장 좋은 해결책이 될 수 있습니다) –
좋은 생각이지만, 외부 라이브러리를 사용하고 싶지 않습니다. 왜냐하면이 코드를 애플릿에서 사용하기 때문입니다. , 그래서 나는 가능한 한 가장 작은 크기의 앱을 갖고 싶지 않다. 사실, 나는 다른 방법으로 이것을 알아 낸다. 나는 파일에 쓸 때, 시작될 때 파일에 쓸 줄 수를 세고, 그 다음이 수를 파일에 쓴다. 그리고 읽는 동안 나는 대략 알 수있다. 파일 읽기 진행률. 몇 분 동안이 주제를 유지 한 다음 닫을 것입니다. 어쨌든, 도와 줘서 고마워! – filipbe