gpt4 book ai didi

java - 使用RandomAccessFile读取文件乱码

转载 作者:行者123 更新时间:2023-12-02 02:43:19 25 4
gpt4 key购买 nike

首先,我使用此代码在文件中写入两行:

String lineSeparator = System.getProperty("line.separator", "\n");
String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test1.txt";
RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "rw");

randomAccessFile.writeUTF("aaaaaaaaaaaaaaaaaaaaa");
randomAccessFile.write(lineSeparator.getBytes());
randomAccessFile.writeUTF("bbbbbbbbbbbbbbbbbbbb");
randomAccessFile.write(lineSeparator.getBytes());

randomAccessFile.close();

写入文件后,我读取了文件:

RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
int i = 0;
String line;
while ((line = randomAccessFile.readLine()) != null) {
Log.i("log", (i++)+" : "+line);
}
randomAccessFile.close();

但是奇怪的事情发生了,每一行都以��开头,我不知道它是什么。

完整日志:

07-13 07:21:41.027 1138-1138/? I/log: 0 : ��aaaaaaaaaaaaaaaaaaaaa
07-13 07:21:41.027 1138-1138/? I/log: 1 : ��bbbbbbbbbbbbbbbbbbbb

乱码是什么,是行分隔符吗?还有,如何正确读取文件?

<小时/>

我尝试使用 writeChars 而不是 writeUTF,但日志中出现了更多乱码:

07-13 08:14:26.352 16821-16821/? I/log: 0 : ��a��a��a��a��a��a��a��a��a��a��a��a��a��a��a��a��a��a��a��a��a
07-13 08:14:26.352 16821-16821/? I/log: 1 : ��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b

最佳答案

randomAccessFile.writeUTF("aaaaaaaaaaaaaaaaaaaaa");
randomAccessFile.write(lineSeparator.getBytes());
randomAccessFile.writeUTF("bbbbbbbbbbbbbbbbbbbb");
randomAccessFile.write(lineSeparator.getBytes());
randomAccessFile.close();

阅读该内容的唯一方法是:

String aaa = randomAccessFile.readUTF();
randomAccessFile.readFully(lineSeparator.getBytes());
String bbb = randomAccessFile.readUTF();
randomAccessFile.readFully(lineSeparator.getBytes());

可以看出,编写行分隔符完全是浪费时间和空间。

简而言之,writeUTF()写入只能由readUTF()读取的数据。

请参阅 Javadoc。

关于java - 使用RandomAccessFile读取文件乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45074169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com