用RandomAccessFile向已存在txt文件中插入和删除内容 有一个txt文件,内容如下百度(第一行)雅虎(第二行)谷歌(第三行)我想删除 雅虎 ,怎么写?我想在雅虎后面插入一行 新浪 ,怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【weinianjie1】截止到2008-06-23 07:45:18的历史汇总数据(不包括此帖):发帖数:0 发帖分:0 结贴数:0 结贴分:0 未结数:0 未结分:0 结贴率:-------------------结分率:-------------------如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html 读取每一个字符,并把它放进LinkedList里,然后进行添加删除 不用RandomAccessFile这个类.没法查找的.思路就是把文件读入到一个StringBuilder中.然后替换内容,最后再写回原来的文件即可.示例代码如下:FileReader reader = new FileReader("你的文件");String oneLine = "";StringBuilder sb = new StringBuilder();while((oneLine=reader.readLine()) != -1) { sb.append(oneLine).append("\n");//如果想在记事本中显示回车的话用\r\n}reader.close();sb.replace("雅虎", "新浪");FileWriter writer .....//下面是写回原来的文件 public static void main(String args[]) throws IOException { File file = new File("C:\\txt.txt"); if (!file.exists()) file.createNewFile(); PrintWriter print = new PrintWriter(file); print.println("百度"); print.println("雅虎"); print.println("谷歌"); print.close(); String str ="新浪"; RandomAccessFile rand = new RandomAccessFile(file,"rw"); rand.seek(2*3*1); rand.write(new byte[str.getBytes().length]); rand.close(); BufferedReader read = new BufferedReader(new FileReader(file)); String s; while((s = read.readLine()) != null) System.out.print(s+"\n"); read.close(); rand = new RandomAccessFile(file,"rw"); rand.seek(2*3*1); //2字节*3(汉字二字节\n也占二字节)*行数1 rand.write(str.getBytes()); rand.close(); read = new BufferedReader(new FileReader(file)); while((s = read.readLine()) != null) System.out.print(s+"\n"); read.close(); } RandomAccessFile 的readLine()要用String "百度" = new String("百度".getBytes("iso-8859-1"),"GBK");转码才能显示,建议用BufferReader(new FileReader(new File("aaa.txt")))来readLine() 一个关于线程的问题 寻个解决方案 用writeUTF()方法向记事本写入字符串的问题! java的传值调用问题? 请教Applet中关于JLabel加图片的问题 如何设置JTABLE某一个单位格的TEXT的值 高手指点Java问题:怎样将可视化的Applet窗体的最小化,最大化栏去掉? 菜鸟提问:java运行的问题? 我是新手,请问Jbuilder中的控件怎样调整大小和位置,请大虾多多指点 JDBC2.0的问题? excel文件打开后再导入数据报错 能直接覆盖吗 请高手帮忙看看错误在那里。谢谢!
楼主【weinianjie1】截止到2008-06-23 07:45:18的历史汇总数据(不包括此帖):
发帖数:0 发帖分:0
结贴数:0 结贴分:0
未结数:0 未结分:0
结贴率:-------------------结分率:-------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
String oneLine = "";
StringBuilder sb = new StringBuilder();
while((oneLine=reader.readLine()) != -1) {
sb.append(oneLine).append("\n");//如果想在记事本中显示回车的话用\r\n
}
reader.close();
sb.replace("雅虎", "新浪");
FileWriter writer .....//下面是写回原来的文件
public static void main(String args[]) throws IOException
{
File file = new File("C:\\txt.txt");
if (!file.exists())
file.createNewFile();
PrintWriter print = new PrintWriter(file);
print.println("百度");
print.println("雅虎");
print.println("谷歌");
print.close();
String str ="新浪";
RandomAccessFile rand = new RandomAccessFile(file,"rw");
rand.seek(2*3*1);
rand.write(new byte[str.getBytes().length]);
rand.close();
BufferedReader read = new BufferedReader(new FileReader(file));
String s;
while((s = read.readLine()) != null)
System.out.print(s+"\n");
read.close();
rand = new RandomAccessFile(file,"rw");
rand.seek(2*3*1); //2字节*3(汉字二字节\n也占二字节)*行数1
rand.write(str.getBytes());
rand.close();
read = new BufferedReader(new FileReader(file));
while((s = read.readLine()) != null)
System.out.print(s+"\n");
read.close();
}
String "百度" = new String("百度".getBytes("iso-8859-1"),"GBK");
转码才能显示,建议用BufferReader(new FileReader(new File("aaa.txt")))来
readLine()