描述:
修改文本文件内容,修改一行或者删除一行解决方法:
java中不提供修改文件的方法,因此先讲已知源文件读出来,然后进行修改,存入一个临时文件,再把源文件删除,最后把临时文件更名问题:
源文件不能删除,不知道是什么错误,权限和目录都没有问题,建立文件和写入很正常,就是不能删除。活见鬼源代码:
String  line=  "  ";  
File  srcf=new  File(tbName+  ".sc  ");  
File  dstf=new  File(tbName+  ".tmp  ");  
dstf.createNewFile();  
RandomAccessFile  raf=new  RandomAccessFile(tbName+  ".sc  ",  "rw  ");  
RandomAccessFile  traf=new  RandomAccessFile(tbName+  ".tmp  ",  "rw  ");  
raf.seek(0);  
while(raf.getFilePointer()!=raf.length())  
{  
line=raf.readLine();  
line=line.toUpperCase();  
if(!line.startsWith(colName))  
{  
traf.writeBytes(  "\r\n  "+line);  
 
}  
 
}  
raf.close();  
traf.close();  
 
File  src=new  File(tbName+  ".sc  ");  
if(!src.exists())  
{  
System.out.println(  "delete  failed  ");  
}  
else  
{  
src.delete();  
if(src.exists())  
{  
System.out.println(  "file  exists  ");  
}  
else  
{  
dstf.renameTo(src);  
}  
}  
 
 
 
以上是删除部分的程序  
 
 
以下是结果  
 
 >display  *  
 
 
TABLE  TOBY  
----------  
SEX  INT  
FACE  STRING  
 
 
TABLE  XXC  
----------  
SSN  INT  
ID  INT  
NAME  STRING  
MEMO  STRING  
 >remove  id  from  xxc  
Are  you  sure  you  want  to  REMOVE  this  Column?(YES  or  NO)yes  
file  exists  
 >quit  
Thank  you  for  using  MyDatabase.  

解决方案 »

  1.   

    File  srcf=new  File(tbName+  ".sc  ");  
    File  src=new  File(tbName+  ".sc  ");  
    两个中把其中一个改成new  File(tbName);  
    再把
    dstf.renameTo(src);
    这行中的参数改为你刚才修改的那个file名
      

  2.   

    rename之前将new  File(tbName)删除;
    rename之后将dstf删除。
      

  3.   

    你看错眼了吧,你看到的已经不是原来那个文件了,而是由(tbName+".tmp")这个文件rename而来的。
      

  4.   

    对,看看文件流是否关闭,关闭后在flush一下