A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许冉 黑马帝   /  2011-9-25 19:34  /  2587 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO视频中的例子对文件的操作
不是覆盖就是续写
要是想在文本某个位置插入一些数据,原来的数据自动后移,怎么弄
茫茫api,用过的赐教一下

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

5 个回复

倒序浏览
黑马网友  发表于 2011-9-25 22:29:14
沙发
搞了半天没搞出来
回复 使用道具 举报
有个类叫RandomAccessFile.支持你说的操作

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
你说的那是追加文件内容,主要的技术要点如下:
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 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-26 10:34:48
报纸

回复 板凳 的帖子

你说的文件的追加就是把数据写到文件的末尾
我是想在文件的中间某个位置插入一些数据
就像我们输入的时候,光标移动文本中间,写点东西,光标后面的数据自动后移
这个怎么弄
回复 使用道具 举报
文件位置的指针默认位于文件的开头处,通过seek()方法来设置文件指针位置,通过getFilePointer()方法可以获得文件位置指针的位置,然后剩余的不用我再说了吧..................
我还是说一下吧,我的意思就是让你用seek(long pos)这个方法来移动指针,参数pos表示从文件开头以字节为单位测量的偏移量位置,然后用write(int b)方法将数据写到读写指针后面,完成文件的追加,参数b表示要写入的byte
[ 本帖最后由 何德虎 于 2011-09-26  12:59 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 再给加点!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马