2013-04-30 1 views
0

BufferedWriter를 사용하여 특정 인코딩으로 텍스트를 파일에 쓰고 있습니다. 파일을 닫기 전에 파일 크기를 바이트로 계산하고 싶습니다.BufferedWriter를 통해 파일에 기록 된 바이트 수를 계산하십시오.

bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),encoding),bsize); 
bw.write(string); 

내 계획하는 String.getBytes()를 사용했지만,이 방법은 특정 인코딩을 제공하는 것을 허용하지 않습니다 (내가 기본 인코딩 속성을 재정의 할 수 없습니다). 당신이 상관없이 추가하고 있는지의 여부를 작동 변수 및 액세스에 저장, 단지 계산을위한 FileOutputStream에 대한 참조 데이터를 중복되지 않는 방법을 찾고 있다면

+0

'long fileSize = file.length(); – NINCOMPOOP

+0

이 단계에서는 파일이 닫히지 않으므로 파일을 닫을 수 없습니다. – yuris

+0

좋아, 내 실수! – NINCOMPOOP

답변

2

대신 사용

+0

LOL, 나는 어리 석다. 다른 방법을 위해 인텔리 센스 팝업을 스크롤 다운하는 것은 게으른 것이었다. 당신이 몇 분 안에 답변을 할 수 있을까요? 10 분 제한이 있습니다 ... – yuris

0

String#getBytes(encoding)FileChannel에서 getFileChannel(). 데이터가 쓰여지기 전후에 long position()으로 전화 할 수 있으며 값의 차이는 쓰여진 바이트 수를 알려줍니다.

+0

실제로 "델타"는 필요하지 않지만 점에 이르기까지 필기 데이터의 크기는이 기준에 따라 결정해야합니다. 파일을 만들고 새 파일을 시작하십시오. – yuris

+0

그러면 처음에 값을 기록 할 필요는 없지만'position()'에 의해 반환 된 평범한 값을 얻으십시오. 여전히 바이트 수 계산을 위해 데이터 중복을 필요로하지 않으므로 인코딩을 두 번 지정할 필요가 없습니다. – misberner

+0

또한 position()은 flush() 후에 만 ​​작동합니다. 이는 후반 단계에서 플러시가 수행되기 때문에 문제가됩니다. – yuris

관련 문제