자바에서 파일에 문자열 읽어오기...
글쓴이: sadrove / 작성시간: 금, 2004/09/03 - 10:19오후
코드는 아래와 같습니다..
실행하면 문자열이 깨진채로 읽어옵니다..
어떤 부분이 잘못 된건지 조언 좀 구할 수 있을까요..^^...
public void fileRead(String filename){ File aFile = new File(filename); FileInputStream inFile = null; try{ inFile = new FileInputStream(aFile); }catch(FileNotFoundException e){ e.printStackTrace(System.err); System.exit(1); } FileChannel inChannel = inFile.getChannel(); ByteBuffer buf = ByteBuffer.allocate(48); try{ while(inChannel.read(buf) != -1){ System.out.println("String read : " + ((ByteBuffer)(buf.flip())).asCharBuffer().toString()); buf.clear(); } System.out.println("EOF에 도달했습니다."); inFile.close(); //파일과 채널 닫기 }catch(IOException e){ e.printStackTrace(System.err); System.exit(1); } System.exit(0); }
그리고 코드중에 버퍼의 크기를 정하는 부분에서요..ByteBuffer buf = ByteBuffer.allocate(48);
텍스트의 길이를 모르는상태에서 버퍼의 크기를 정하려면 어떻게 해야하죠..?..
이렇게 꼭 명시적으로 명시적으로 버퍼의 크기를 정해줄 수 밖에 없는건가요.?..
에효...자바...어렵네요... :(
Forums:
저는 요즘의 자바 IO 는 잘 모릅니다만,예전에 제가 쓰던 방식으로
저는 요즘의 자바 IO 는 잘 모릅니다만,
예전에 제가 쓰던 방식으로 보여드린다면 다음과 같습니다.
텍스트 화일을 읽으시는것 같은데, 제코드 부분을 띄어서 보여드리면..
이걸 쓸때는 간단히
이렇게 하면 되죠.
자바가 만약에 어렵게 느껴지신다면, 자바란놈이 너무 유연하게 여기 저기서
다 사용되게 하려다 보니, 패키지도 복잡해지고, 연결고리도 많아지고 그런건데,
제 기억으로는 그런 유연성이 상당히 많은 코드를 줄여주었던 기억이 납니다.
도움이 되셨길..
삽질의 대마왕...
무슨 이유인지 모르나.. 어제 답글을 한참 써서 올리기하니까... 질문이
무슨 이유인지 모르나.. 어제 답글을 한참 써서 올리기하니까... 질문이 지워졌더군요-.-;
별로 댓글달고 싶은 맘이 안생기네요-.-;
----
the smile has left your eyes...
죄송합니다...
앗...그러셨군요..
죄송합니다..
어제는 파일에 Write하는 부분에 대한 질문을 올렸었는데..
질문 올린 담에 해결이 되어서...
답변이 없길래 그냥 지웠었습니다..
ㅠ.ㅠ...정말 죄송합니다..
p.s litdream님 감사합니다..
염치없지만..
litdream님이 알려주신 방법도 괜찮지만..
위에 제가 올린 소스에서 해결을 하고 싶은데..
좋은 방법이 없을까요..?..
iolo님 때문에 죄송스럽지만...염치불구하고 이렇게 다시 질문 드립니다..
부탁드립니다....
글자가 깨지는 것은 디코딩이 되지 않아서 입니다. CharsetDecor
글자가 깨지는 것은 디코딩이 되지 않아서 입니다. CharsetDecorder를 이용, buffer를 스트링으로 찍어 보면 콘솔상에 글자가 깨지지 않죠. 이런식으로... Charset은 알맞게 적어 넣고요.
버퍼 크기는, FileChannel의 size를 이용해서 조절하시면 됩니다.
그런데, FileChannel이 꼭 필요해서 쓰시는 거죠?
----
I paint objects as I think them, not as I see them.
atie's minipage
댓글 달기