有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何通过java从文件中删除数据?

我想用java读一个文件。然后,我想在不重新写入文件的情况下删除该文件中的一行

我该怎么做

有人建议我在RandomAccessFile的帮助下读取/写入文件,而不必重新写入文件How to write data to a file through java?

具体来说,该文件包含行。一行包含三个字段-id、名称和职业-用\t分隔。我希望通过读取器或InputStream或任何其他方式读取该文件,然后搜索具有指定关键字(例如121)的行,然后删除整行

需要在不重新写入整个文件的情况下执行此操作


共 (4) 个答案

  1. # 1 楼答案

    下面的代码搜索单个文本文件中的一行或多个字段,逐行读取文件 然后,行或字段可以替换为“”或任何其他字符串。这里我们使用模式和匹配器类

    如果这不能解决你的问题,请告诉我

    导入java。木卫一; 导入java。util。正则表达式; 导入java。util。性质; 公共类删除线 {

    公共静态void main(字符串[]args) { BufferedReader br=null; 尝试 { 字符串行=null; 文件f=新文件(“d:/xyz.txt”)

    String replaceString=properties.getProperty("replaceAll.String");
    

    ); br=新的BufferedReader(新的文件读取器(“d:/giri/scjp/”)

              while ( (line = br.readLine()) != null )//BufferedReader contains readline method
      {
    
          Pattern p=Pattern.compile(searchString);/*here u an specify the line u want to delete */
          Matcher m=p.matcher(line);
          line=m.replaceAll(replaceString);/*here replace String u can " " so that it will be emptied */
          System.out.println(line);
        } 
          //System.out.println(line);
               } 
    
          }
    

    } br=新的BufferedReader(新的文件读取器(“d:/xyz.txt”); 字符串行=null

    }

    catch (FileNotFoundException e)
    {
        System.out.println("File couldnt find");
    
      e.printStackTrace();
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
    

    }

    }

  2. # 2 楼答案

    在行中添加一个标记,说明行是否被删除:这将使软件删除而不是硬件删除

    如果必须插入新行,则可以重用标记为已删除的行

  3. # 3 楼答案

    我认为,在不写入文件系统(包括删除一行)的情况下,无法以任何方式更改文件系统上的文件

    您的意思是希望在不改变文件元数据的情况下编写文件,就像上次修改时一样


    根据您的最新问题:

    我认为你不能做你在这里要求做的事。一旦文件被写入,就不能从文件中删除字节,请注意RandomAccessFile中没有deleteByte或removeByte方法

    我建议将文件内容移动到一个数据库中,这样就可以进行这种面向记录的操作

    另一种选择是,您必须重写该文件。对不起

  4. # 4 楼答案

    “行”是一个抽象概念——它们只是以“\n”结尾的任意字节序列BufferedWriters及其同类文件不支持以这种方式进行文本编辑,因此您必须重写整个文件

    一般来说,您要做的是:

    • 打开阅读器
    • 将内容读入适当的数据结构
    • 关闭阅读器
    • 更改此数据结构中需要更改的数据/记录
    • append == false打开一个FileWriter
    • 将数据结构的内容写入结果文件
    • 关闭FileWriter