问题图片:
第一次执行:
删除A进行第二次执行(两次代码一致):
问题分析及解决方案:
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomIO {
public static void main(String[] args) {
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile("D:/b.txt", "rw");
raf.seek(3);
System.out.println((char)raf.read());//r
raf.write(65);
System.out.println((char)raf.read());//两个空白行
System.out.println((char)raf.read());
System.out.println((char)raf.read());
System.out.println((char)raf.read());
System.out.println((char)raf.read());
System.out.println((char)raf.read());
System.out.println((char)raf.read());
System.out.println((char)raf.read());
System.out.println((char)raf.read());
} catch (IOException e) {
e.printStackTrace();
} finally {
if(null != raf){
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
这是因为在记事本中只要没有在文件没有关闭的情况下保存,记事本识别出换行符\n,就不会再添加\r。因此为了解决这个问题要先删除\n,再用回车\r\n。