我只会在文件尾追加内容,谁告诉我怎么在一个文件的开始追加内容呢??谢谢

解决方案 »

  1.   

    用RandomAccessFile这个类
    此类的实例支持对随机访问文件的读取和写入
    可以控制文件指针的位置
      

  2.   

    在一个文件的开始追加内容呢?根据磁盘的存储结构,这个操作是无法直接完成的。
    你可以通过
    1 新建一个临时文件
    2 写入你的追加内容
    3 读取原始文件内容,追加到新文件的末尾
    4 将原始文件删除
    5 将新文件改名为老文件OVER
      

  3.   

    RandomAccessFile好像也是不行的,同意老紫竹,可以缓存一个要追加的内容然后把文件读过来写在追加内容后面然后再写回去。
      

  4.   

    顶!
    有些问题稍微动一下脑袋, 绕以下弯子, 看一下api就把问题解决了。 
    哎!!!
      

  5.   

    引用 3 楼 java2000_net 的回复:
    在一个文件的开始追加内容呢? 根据磁盘的存储结构,这个操作是无法直接完成的。 
    你可以通过 
    1 新建一个临时文件 
    2 写入你的追加内容 
    3 读取原始文件内容,追加到新文件的末尾 
    4 将原始文件删除 
    5 将新文件改名为老文件 
    OVER 
    谢谢这位的答案!
    谢谢各位!
    这样也有想过,不知有何更简便的方式呢?期待一下下
      

  6.   

    假如文件里是文本文件  
    1 打开源文件
    2 读取文件中的内容 存放到一个String中 
    3 将添加的String 和原先的String相加
    4 将相加后的String写入源文件
    5 关闭源文件package com.chncloud.utils;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;public class FileAppender {
    public static void main(String[] args){
    appendStringToFile("被加入到文件的头部第一个\n","F:\\Input\\test.txt");
    }

    public static boolean appendStringToFile(String text,String fileName){
    boolean res = false;
    File file = new File(fileName);
    if(file.isFile()){
    FileInputStream fis = null;
    FileOutputStream fos = null;
    try {
    fis = new FileInputStream(file);
    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    String temp = null;
    StringBuffer sb = new StringBuffer("");
    while((temp=br.readLine())!=null){
    sb.append(temp+"\n");
    }
    String finalString = text + sb.toString();
    System.out.println(finalString);
    fos = new FileOutputStream(fileName);
    fos.write(finalString.getBytes());
    fos.close();
    res = true;
    } catch (Exception e) {
    res = false;
    e.printStackTrace();
    }finally{
    try{
    if(fis!=null){
    fis.close();
    }if(fos!=null){
    fos.close();
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }
    return res;
    }
    }