randomaccessfile writechar方法写nulto文件,writeutf写enq,如何摆脱这些?

twh00eeo  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(408)

在java.io.randomaccessfile中,当使用writechar()方法将循环中的字符数组写入文本文件时

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时

txtfile.writeUTF("hello");

它给出的结果在前面是一个空格,当在notepad++中打开时,它显示为

[ENQ]hello

如何像本例中那样,在文件中写入或附加一个带out空格的普通行(如[nul]或[enq])?
请张贴答案如何写任何字符串到一个文件中随机存取文件在java中!
提前谢谢!

8qgya5xd

8qgya5xd1#

char java中的值是两个字节。 RandomAccessFile 是用来读写二进制数据的。它不做任何文本转换。当被要求写一个字符时,它只将该字符的内存表示形式写入磁盘。
请看文档以了解 RandomAccessFile 班级:
写卡(int v)
将字符作为双字节值写入文件,首先是高字节值。
写字节(int v)
将一个字节作为一个字节的值写入文件。
写入字节(字符串)
将字符串作为字节序列写入文件。
所以使用 writeByte 而不是 writeChar 将字符作为单个ascii字节写入文件,所有编辑器都应以相同的方式处理。要在一次调用中将字符串作为单字节字符写入文件,请使用 writeBytes 方法,该方法获取字符串并将其作为单字节字符写入文件。
如果您只想将文本写入文件,最好使用 FileWriter 或者 OutputStreamWriter 让我们来上课。这些类编写文本时考虑了字符编码。前者采用默认字符编码。后者允许您指定类在写入文件之前用于将文本转换为字节的字符编码。

相关问题