这篇是基于在使用randomAccessFile读写文件时,确定转码形式没有错的情况下,依旧出现了乱码的情况的一种可能。
package ABC;
import java.io.*;
public class markdown {
public static void main(String[] argv) {
try {
RandomAccessFile br = new RandomAccessFile("D:\\officePC\\onedirve\\OneDrive\\桌面\\1.txt","rw");
String str;
long position = 0;
long next_position = 0;
while((str = br.readLine())!=null) {
position = br.getFilePointer();
String str1 = new String(str.getBytes("ISO-8859-1"));
String str2 = new String("##".getBytes("ISO-8859-1")) + str1;
br.seek(next_position);
System.out.println(str2);
br.write(str2.getBytes());
br.write(new String("\n").getBytes());
next_position = position;
}
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
上面的代码执行两次循环后,出现了这个情况:
如上,可见,我首先读取了一个位置,position,然后更改每一行(增加),每一行的长度就变了,但是每一行的内存长度没有变化,于是系统将其多余字符寄到下一行,讲下一行字符覆盖。
解决方案:必须把后面的全部读进来,修改。