黑马程序员技术交流社区
标题:
在文本中插入数据
[打印本页]
作者:
许冉
时间:
2011-9-25 19:34
标题:
在文本中插入数据
IO视频中的例子对文件的操作
不是覆盖就是续写
要是想在文本某个位置插入一些数据,原来的数据自动后移,怎么弄
茫茫api,用过的赐教一下
作者:
匿名
时间:
2011-9-25 22:29
搞了半天没搞出来
作者:
梁锡伟
时间:
2011-9-26 01:46
有个类叫RandomAccessFile.支持你说的操作
作者:
何德虎
时间:
2011-9-26 08:59
你说的那是追加文件内容,主要的技术要点如下:
1、通过RandomAccessFile以读写的方式打开文件输出流,使用它的seek方法可以将读写指针移到文件尾,再使用它的write方法将数据写到读写指针后面,完成文件的追加。
2、通过FileWriter打开文件输出流,构造FileWriter时指定写入模式,是一个布尔值,为true时表示写入的内容添加到已有的文件内容后面,为false时重新写文件,以前的数据被清空,默认为false,
范例如下:[code=java]package com.zf.s10;//创建一个包
import java.io.FileWriter;//引入类
import java.io.IOException;
import java.io.RandomAccessFile;
public class TextSuperaddition {//将内容追加到文件尾部
//使用RandomAccessFile对象实现内容追加
public static void addFirst(String fileName){
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
long fileLength = randomFile.length();//获得文件字节数
randomFile.seek(fileLength);//将写文件指针移到文件尾。
String content="\nIf you would know the value of money, go and try to borrow some.\n" +
"要想知道钱的价值,就想办法去借钱试试。\n";
randomFile.write(content.getBytes("gb2312"));//内容写到文件内容尾部
randomFile.close();
} catch (IOException e) {//捕获异常
e.printStackTrace();
}
}
//使用FileWriter对象实现内容追加
public static void addSecond(String fileName){
try {
//打开一个写文件器,true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
String content="That man is the richest whose pleasure are the cheapest. \n"+
"能处处寻求快乐的人才是最富有的人。\n";
writer.write(content);//内容写到文件内容尾部
writer.close();
} catch (IOException e) {//捕获异常
e.printStackTrace();
}
}
public static void main(String[] args) {//java程序主入口处
String fileName = "F:/poem.txt";
System.out.println("1.RandomAccessFile对象实现内容追加:");
addFirst(fileName);//调用方法1
System.out.println("2.FileWriter对象实现内容追加:");
addSecond(fileName);//调用方法2
System.out.println("追后后文件内容显示:");
TextReadFile.readFileByLines(fileName);//调用TextReadFile类的按行读取文件方法
}
}[/code]
[
本帖最后由 何德虎 于 2011-09-26 09:02 编辑
]
作者:
匿名
时间:
2011-9-26 10:34
标题:
回复 板凳 的帖子
你说的文件的追加就是把数据写到文件的末尾
我是想在文件的中间某个位置插入一些数据
就像我们输入的时候,光标移动文本中间,写点东西,光标后面的数据自动后移
这个怎么弄
作者:
何德虎
时间:
2011-9-26 12:53
文件位置的指针默认位于文件的开头处,通过seek()方法来设置文件指针位置,通过getFilePointer()方法可以获得文件位置指针的位置,然后剩余的不用我再说了吧..................
我还是说一下吧,我的意思就是让你用seek(long pos)这个方法来移动指针,参数pos表示从文件开头以字节为单位测量的偏移量位置,然后用write(int b)方法将数据写到读写指针后面,完成文件的追加,参数b表示要写入的byte
[
本帖最后由 何德虎 于 2011-09-26 12:59 编辑
]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2