Random Access File로 파일에 출력을 하고 있습니다..
근데...writeChar메서드로 아무리 \n과 \r을 써놔도..
줄이 안 바뀌네요..에궁..
리눅스에서는 제대로 보이는데...
윈도우에서 열면...개행문자와 캐리지 리턴 문자가 있어야 할 곳에
이상한 문자들만 있습니다..
윈도우에서 제대로 보게 할려면 어케 해야 되는지
가르쳐 주시면 고맙겠습니다..
그럼...꾸벅..
플랫폼마다 개행문자(line separator)가 달라서 그런것 같습니다.
윈도우에선 13(CR) 10(LF) 순서를 개행문자로 사용하고,
유닉스는 10(LF)를 개행문자로 사용합니다.
출력파일을 다루는 플랫폼에 맞게 출력해주시면 될것 같습니다.
순서맞춰서...
해줬는데...
안 바뀌었거든요....
근데..이상한건..
메모장으로 보면 한줄이고..
워드패드나 다른 워드 프로세서로 보면...말짱하게 나오네요..-_-;;
자바에서는 문자를 2 바이트 씩(유니코드던가..) 쓰자나요..
아마 메모장에서 이런 포멧을 제대로 해석 못하나 봅니다..--a..
세상은 견고하고 삶은 유희가 아니다...
DataOutput.writeChars 메소드는 레퍼런스에 다음과 같은 설명이 있습니다.
Writes a char value, which is comprised of two bytes, to the output stream. The byte values to be written, in the order shown, are: (byte)(0xff & (v >> 8)) (byte)(0xff & v) The bytes written by this method may be read by the readChar method of interface DataInput , which will then return a char equal to (char)v.
(byte)(0xff & (v >> 8)) (byte)(0xff & v)
The bytes written by this method may be read by the readChar method of interface DataInput , which will then return a char equal to (char)v.
당연하게, writeChar 메소드로 13등을 출력하게되면, 2바이트로 기록이되겠지요.
이런 경우엔, 바이트 단위로 기록하는 것이 맞을것 같습니다.
DataOutput.write 계열 메소드를 사용해보세요.
(물론 출력하고자하는 데이터가 byte가 아니라면 적절히 바꿔줘야겠죠?)
그리고, Windows NT 이후의 노트패드에서는 유니코드를 지원하는 것으로
알고있습니다. 대신 파일 첫부분에 0xFE 0xFF등을 기록해서 유니코드를
사용한 문서임을 표시해 두는것 같네요.
아래의 간단한 코드가 도움이 되었으면 좋겠네요.
import java.io.RandomAccessFile; public class TestRAF { public static void main(String[] args) throws Exception { RandomAccessFile raf = new RandomAccessFile("raf-test", "rw"); raf.write("strings".getBytes()); raf.writeByte(13); raf.writeByte(10); raf.write("next line".getBytes()); } }
말끔하게 해결했습니다...
속이 다 후련하네요
^^..
다시 한 번 감사합니다..
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
플랫폼마다 개행문자(line separator)가 달라서 그런것 같습니다
플랫폼마다 개행문자(line separator)가 달라서 그런것 같습니다.
윈도우에선 13(CR) 10(LF) 순서를 개행문자로 사용하고,
유닉스는 10(LF)를 개행문자로 사용합니다.
출력파일을 다루는 플랫폼에 맞게 출력해주시면 될것 같습니다.
아....그렇게 했거든요..
순서맞춰서...
해줬는데...
안 바뀌었거든요....
근데..이상한건..
메모장으로 보면 한줄이고..
워드패드나 다른 워드 프로세서로 보면...말짱하게 나오네요..-_-;;
자바에서는 문자를 2 바이트 씩(유니코드던가..) 쓰자나요..
아마 메모장에서 이런 포멧을 제대로 해석 못하나 봅니다..--a..
세상은 견고하고 삶은 유희가 아니다...
DataOutput.writeChars 메소드는 레퍼런스에 다음과 같은
DataOutput.writeChars 메소드는 레퍼런스에 다음과 같은 설명이 있습니다.
당연하게, writeChar 메소드로 13등을 출력하게되면, 2바이트로 기록이되겠지요.
이런 경우엔, 바이트 단위로 기록하는 것이 맞을것 같습니다.
DataOutput.write 계열 메소드를 사용해보세요.
(물론 출력하고자하는 데이터가 byte가 아니라면 적절히 바꿔줘야겠죠?)
그리고, Windows NT 이후의 노트패드에서는 유니코드를 지원하는 것으로
알고있습니다. 대신 파일 첫부분에 0xFE 0xFF등을 기록해서 유니코드를
사용한 문서임을 표시해 두는것 같네요.
아래의 간단한 코드가 도움이 되었으면 좋겠네요.
고맙습니다!!!
말끔하게 해결했습니다...
속이 다 후련하네요
^^..
다시 한 번 감사합니다..
세상은 견고하고 삶은 유희가 아니다...
댓글 달기