RandomAccessFile writechar 方法写 NUL 到文件和 writeUTF 写 ENQ ,如何摆脱那些?
RandomAccessFile writechar method writing NULto file and writeUTF writing ENQ , how to get ridoff those?
在java.io.RandomAccessFile中,当使用方法writeChar()循环写入一个char数组到一个文本文件为
RandomAccessFile txtfile = new RandomAccessFile("Hello.txt","rw");
char c[] = {'S','i','g','n','e','d'};
for(char k:c) txtfile.writeChar(k);
在 Hello.txt 中给出结果,就像在普通记事本中打开时一样
S i g n e d
但是,当用文本编辑器 NotePad++ 打开时,Hello.txt 显示为
[NUL]S[NUL]i[NUL]g[NUL]n[NUL]e[NUL]d
当我使用 writeUTF() 方法将字符串写入 Hello.txt as
txtfile.writeUTF("hello");
它给出的结果是前面的空白 space,当在 NotePad++ 中打开时它显示为
[ENQ]hello
如何在没有空格(如 [NUL] 或 [ENQ] )的情况下编写或附加普通行到文件,如本例所示?
请post回答如何在Java!
中将任何字符串写入RandomAccessFile中的文件
提前致谢!
Java中的char
值是两个字节。 RandomAccessFile
表示读写二进制数据。它不进行任何文本转换。当被要求写入一个字符时,它只是将该字符在内存中的表示写入磁盘。
查看 RandomAccessFile
class 的文档:
writeChar(int v)
- Writes a char to the file as a two-byte value, high byte first.
writeByte(int v)
- Writes a byte to the file as a one-byte value.
writeBytes(String s)
- Writes the string to the file as a sequence of bytes.
因此使用 writeByte
而不是 writeChar
将字符作为单个 ASCII 字节写入文件,所有编辑器都应以相同的方式处理。
要在一次调用中将字符串作为单字节字符写入文件,请使用 writeBytes
方法,该方法接受一个字符串并将其作为单字节字符写入文件。
如果您只想将文本写入文件,最好使用 FileWriter
或 OutputStreamWriter
class 来完成。这些 classes 在编写文本时考虑了字符编码。前者采用默认字符编码。后者允许您指定希望 class 在写入文件之前将文本转换为字节的字符编码。
在java.io.RandomAccessFile中,当使用方法writeChar()循环写入一个char数组到一个文本文件为
RandomAccessFile txtfile = new RandomAccessFile("Hello.txt","rw");
char c[] = {'S','i','g','n','e','d'};
for(char k:c) txtfile.writeChar(k);
在 Hello.txt 中给出结果,就像在普通记事本中打开时一样
S i g n e d
但是,当用文本编辑器 NotePad++ 打开时,Hello.txt 显示为
[NUL]S[NUL]i[NUL]g[NUL]n[NUL]e[NUL]d
当我使用 writeUTF() 方法将字符串写入 Hello.txt as
txtfile.writeUTF("hello");
它给出的结果是前面的空白 space,当在 NotePad++ 中打开时它显示为
[ENQ]hello
如何在没有空格(如 [NUL] 或 [ENQ] )的情况下编写或附加普通行到文件,如本例所示?
请post回答如何在Java!
中将任何字符串写入RandomAccessFile中的文件提前致谢!
Java中的char
值是两个字节。 RandomAccessFile
表示读写二进制数据。它不进行任何文本转换。当被要求写入一个字符时,它只是将该字符在内存中的表示写入磁盘。
查看 RandomAccessFile
class 的文档:
writeChar(int v)
- Writes a char to the file as a two-byte value, high byte first.
writeByte(int v)
- Writes a byte to the file as a one-byte value.
writeBytes(String s)
- Writes the string to the file as a sequence of bytes.
因此使用 writeByte
而不是 writeChar
将字符作为单个 ASCII 字节写入文件,所有编辑器都应以相同的方式处理。
要在一次调用中将字符串作为单字节字符写入文件,请使用 writeBytes
方法,该方法接受一个字符串并将其作为单字节字符写入文件。
如果您只想将文本写入文件,最好使用 FileWriter
或 OutputStreamWriter
class 来完成。这些 classes 在编写文本时考虑了字符编码。前者采用默认字符编码。后者允许您指定希望 class 在写入文件之前将文本转换为字节的字符编码。