想要在进行某项操作成功后,如打印,就在原文本文件对应的记录行前插入符号'@'
如:
原文件数据:
4 3 2 4 1 06/10/16/22/24/35//05/34
5 2 8 16 1 02/11/17/19/20/28/31/35
6 3 7 14 1 04//01/09/15/17/19/27/35
打印完第一条记录后文件内容变为
@4 3 2 4 1 06/10/16/22/24/35//05/34
5 2 8 16 1 02/11/17/19/20/28/31/35
6 3 7 14 1 04//01/09/15/17/19/27/35
麻烦给个解决方案。偶对IO不是很熟悉,多谢啦~!
如:
原文件数据:
4 3 2 4 1 06/10/16/22/24/35//05/34
5 2 8 16 1 02/11/17/19/20/28/31/35
6 3 7 14 1 04//01/09/15/17/19/27/35
打印完第一条记录后文件内容变为
@4 3 2 4 1 06/10/16/22/24/35//05/34
5 2 8 16 1 02/11/17/19/20/28/31/35
6 3 7 14 1 04//01/09/15/17/19/27/35
麻烦给个解决方案。偶对IO不是很熟悉,多谢啦~!
RandomAccessFile rF = new RandomAccessFile(selectFile, "rw");
for(int i=0; i<id;i++) //id是行数控制
{
rF.readLine();
} rF.writeByte('@');
rF.close();这样子的结果是:
@ 3 2 4 1 06/10/16/22/24/35//05/34
5 2 8 16 1 02/11/17/19/20/28/31/35
6 3 7 14 1 04//01/09/15/17/19/27/35覆盖了那条记录的第一字节,有什么办法可以实现插入一个符号'@'?恳请指点~!!!
加上“@“,line = "@"+line ;
然后再写进去,rf.writeBytes(line);
具体自己弄咯
RandomAccessFile rF = new RandomAccessFile(selectFile, "rw");
for(int i=0; i<2;i++) //id是行数控制
{
rF.readLine();
}
long p = rF.getFilePointer();
rF.seek(p);
rF.writeByte('@');
rF.close();原文件是:
1111111111111
2222222222222
3333333333333
4444444444444
5555555555555
6666666666666
运行后:
1111111111111
2222222222222
@2222222222222
4444444444444
5555555555555
6666666666666这样会把插入记号的行数据覆盖,也不对
RandomAccessFile rf = new RandomAccessFile(f, "rw");
String s = null;
for(int i=0; i<1; i++)
{
rf.readLine();
} long p = rf.getFilePointer(); s = rf.readLine();
System.out.println(s);
s = "@" +s; rf.seek(p); //设置了一下文件指针 rf.writeBytes(s);
rf.writeByte('\n');
rf.close();
}原文件:
1111111111111
2222222222222
3333333333333
4444444444444
5555555555555
6666666666666运行后:
1111111111111
@2222222222222(*)3333333333333 //(*)处在用记事本打开时显示为一个黑色小方块,但是
4444444444444 //粘贴到csdn时又是正常的换行,是否和编码有关呢?
5555555555555
6666666666666
for(int i=0; i<6; i++)
{
s=rf.readLine();
s=s+'@';
rf.writeChars(s);
System.out.println(s);
long p = rf.getFilePointer();
rf.seek(p);
}
好像你的代码和我的需求不一样,而且用writeChars()把用来按单字节存储的都扩展成双字节了