[java 고수님들 해결책 좀 알려 주세요~T^T]
Addictive
이번에졸업연구로비손실압축프로그램을구현하는데
작은파일을압축할때잘돌아가는데120메가를압축할려는데ㅡㅡ;;에러가발생하네여
----------JAVAEXECUTE----------
Exceptioninthreadmainjava.lang.Error
atsun.nio.cs.StreamEncoder$CharsetSE.flushLeftoverChar(StreamEncoder.java:361)
atsun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java:381)
atsun.nio.cs.StreamEncoder.write(StreamEncoder.java:136)
atjava.io.OutputStreamWriter.write(OutputStreamWriter.java:191)
atjava.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)
atjava.io.BufferedWriter.write(BufferedWriter.java:125)
atNewHuffmanCompactionAlgorithm.makeCompationFile(NewHuffmanCompactionAlgorithm.java:42)
atNewHuffmanCompactionAlgorithm.DoCompaction(NewHuffmanCompactionAlgorithm.java:21)
atHuffmanZip.main(HuffmanZip.java:7)
출력완료(2분2초경과)-정상종료
이런에러인데ㅡㅡ;;BufferedWriter에서무슨한계값을넘은거같기도하고....
제대로돌아가게하려면무슨조치를취해야될지도저히모르겠습니다..
//아래메소드가문제의메소드입니다.
privatevoidmakeCompationFile()
{
try{
FileReaderreadFile=newFileReader(fromFile);
FileWriterwriteFile=newFileWriter(toFile);
BufferedReaderusedBufferRead=newBufferedReader(readFile);//버퍼를이용하여속도를높임
BufferedWriterusedBufferWriter=newBufferedWriter(writeFile);
inti;
chartemp;
charsaveTemp;
while((i=usedBufferRead.read())!=-1)
{
temp=(char)i;
huffmanTable.inputBitStream(temp);
while(huffmanTable.readyToWrite())
{
saveTemp=huffmanTable.retrunBUFFER(); //char 형으로 리턴
usedBufferWriter.write((int)saveTemp);
}
}
usedBufferWriter.close();
usedBufferRead.close();
writeFile.close();
readFile.close();
}
catch(Exceptione){}
}
-_-;;;;;도와주세요~갑갑해서잠도안옵니다.
-
나라빛
BufferedReader 의 API를 보시면, 초기에 객체를 생성할때 버버의 사이즈를 정하실수 있구요....
그리고, 소스를 보니 flush() 메소드가 쓰인곳이 없네요...JAVA IO 는 읽고 쓸 데에 flush()를 반드시 해주어야 한다는....close() 되기전에 반드시 flush() 되어야 합니다.(버퍼를 비우는 명령이라고 생각하심 될듯..~~) -
놀리기
버퍼가 가득찼는데 내보내는것보다 받아들이는게 많아서 그런거 아닌가요?