3x
如:
  a.txt
 有数据
 line1:this is line1,
 line2: this is line2,
如何删除第一行保留第二行

解决方案 »

  1.   

    先全部读出第一行来保存在一个String对象 中,然后把对象中的值再写回去.
      

  2.   

    应该只有全读再写一种办法吧。文件在磁盘上的存储,一个扇区以内的数据,是连续存放的,
    就像数组一样,你要删除数组中间的一个元素,就必须移动之后的元素。除非你要删除的恰好是一个扇区的内容,可以通过更改文件分配表,就不必移动文件内容
    这在java下做不到。
      

  3.   

    基本只有全读出,处理后,再写回这个办法。
    好多杀毒软件也是这么干的。
    要是删最后的,以前可用过debug修改文件长度。你要是能用java实现,也可以。
      

  4.   

    刚好我也正在写一个类似的程序把代码给你吧。
    思路是这样的:你先把你的文件中除了要删除的那一行外的所有内容输出到一个临时文件,删除原文件,再把该临时文件名改成原文件名。代码如下:try {
    String removeStr="line1:this   is   line1, ";
    File inFile = new File("E:/Websites/a.txt");
    File outFile = new File("E:/Websites/临时.txt");
    BufferedReader br = new BufferedReader(new FileReader(inFile));
    BufferedWriter bw = new BufferedWriter(new FileWriter(outFile));
    String line1="";
    for (String line=br.readLine(); 
           line != null; 
           line=br.readLine()) {
    System.out.println("开始循环!");
        if (line.indexOf(removeStr) !=-1) { //找到要删除的那一行
         System.out.println("跳过"+removeStr);
         continue;
        } //这个indexOf就可以判断是否存在特殊字符
        line1=line+'\n'; //得到文件中除了要删除的类型名外的每行内容
        String seperator=System.getProperty("line.separator");
    line1=line1.replace("\n", seperator);//若不这样处理打印出的换行符就是一个黑点
        bw.write(line1);
        //bw.newLine();  
    }
    br.close();
    bw.flush();
    bw.close();
    if (inFile.delete()) { //删除a.txt文件
        outFile.renameTo(inFile); //把 临时.txt改名为 webKindName.txt
    }
    System.out.println("Remove a line!!");   //检验以上程序是否可以执行
    } catch (IOException e) {
                      System.out.println("Erro!!");  //出现错误就提示
    }希望对你有帮助!