我想问的是我对一个文件进行修改操作的时候,实际上我是先把文件全部读出,然后对读出内容修改,然后在重新写入文件。我想知道有没有其他方法来操作。

解决方案 »

  1.   

    java.io.RandomAccessFile此类的实例支持对随机存取文件的读取和写入
      

  2.   

    File file = new File("src/color/ball/test.tst");
    System.out.println(file.getAbsolutePath());
    RandomAccessFile random = new RandomAccessFile(file, "rw");
     
    random.seek(10); //移动文件指针到的第10个字节
    random.writeUTF("QQQQQQQQQQQ");
    random.close();
      

  3.   

    其实现的原理就是这样的
    所谓其他操作其实也是这样的,只是感觉上似乎有点不同而已
    FOR EXAMPLE
     RandomAccessFile这个类可以定位修改文件
    File file = new File("FILE.TXT");
    RandomAccessFile random = new RandomAccessFile(file, "rw");
    random.seek(10); //移动文件指针到的第10个字节
    random.writeUTF("SDAF");
    random.close();
    也是全部读入再操作的,或者选择追加文本修改方式
      

  4.   

    大家说的RandomAccessFile我已经在用了,解决不了问题。例如:我的文件内容112233
    我想把22修改成RR,怎么能在不使用  读出----修改----写入的方式  做到。
    下面是我的代码片断
              /******
     * 写入数据
     * 
     */
    public boolean InsertData(String[] strs) {
    if (!ReadTableInfo())
    return false;
    // 获得输入流
    try {
    RandomAccessFile raf = new RandomAccessFile(file, "rwd");
    StringBuffer str = new StringBuffer(); for (int i = 0; i < strs.length; i++) {
    str.append(strs[i] + "::");
    }
    str.append("\n");
    raf.seek(raf.length());
    raf.writeBytes(str.toString());
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return true;
    }
      

  5.   

    dr_lou() ( ) 信誉:100    Blog  2007-03-22 10:24:02  得分: 0  
     
     
       "rw"  什么意思
      
     
    -------------------------------------
    "r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。  
    "rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。  
    "rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到基础存储设备。  
    "rwd"   打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到基础存储设备。