首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用java删除文本文件中的一行

使用java删除文本文件中的一行
EN

Stack Overflow用户
提问于 2012-07-25 16:44:27
回答 3查看 11.7K关注 0票数 1

我很难删除文本文件中的一行,我使用了这段代码,但我最终删除了所有行,需要一些帮助。

代码语言:javascript
运行
复制
    try //vacation leave/
{
    File inputFile = new File("Adlawan" + code1);
    File tempFile = new File("AdalwanTempFile");

    BufferedReader reader = new BufferedReader(new FileReader(inputFile));
    BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

    String lineToRemove = "AdlawanJan2012";
    String currentLine;

    while((currentLine = reader.readLine()) != null)
    {
        //trim newline when comparing with lineToRemove
        String trimmedLine = currentLine.trim();
        if(trimmedLine.equals(lineToRemove)) 
        {
         writer.write(currentLine); 
        }
    }   
    writer.close();
    reader.close();

    if(!inputFile.delete())
    {
        JOptionPane.showMessageDialog(null, "Could not rename file");
        return;
    }
    if(!tempFile.renameTo(inputFile))
        JOptionPane.showMessageDialog(null, "Could not rename file");


}
catch(Exception e)
{
    JOptionPane.showMessageDialog(null, " ");
}

文件中的数据如下所示:

AdlawanJan2012度假-休假-积分-0.6875

AdlawanFeb2012度假-休假-积分-0.6875

AdlawanMar2012度假-休假-积分-0.6875

修剪线条后所需的结果:

AdlawanFeb2012度假-休假-积分-0.6875

AdlawanMar2012度假-休假-积分-0.6875

谢谢..。

EN

回答 3

Stack Overflow用户

发布于 2012-07-25 17:04:44

如果行以"lineToRemove"变量开头,我认为您正在尝试删除文件中的行,在这种情况下,您可能希望使用"startsWith"方法而不是"equal"方法。

代码语言:javascript
运行
复制
while((currentLine = reader.readLine()) != null)
{
    //trim newline when comparing with lineToRemove
    String trimmedLine = currentLine.trim();
    if(!trimmedLine.startsWith(lineToRemove)) 
    {
        // if current line not start with lineToRemove then write to file
        writer.write(currentLine); 
    }
}
票数 3
EN

Stack Overflow用户

发布于 2012-07-25 17:09:15

trim()方法仅删除前导和尾随空格,而不删除空格后面的字符。

代码语言:javascript
运行
复制
String lineToRemove = "AdlawanJan2012";
代码语言:javascript
运行
复制
....
代码语言:javascript
运行
复制
String trimmedLine = currentLine.trim();
if(trimmedLine.substring(0, 14).equals(lineToRemove)) {
    //Your deletion logic
}
票数 1
EN

Stack Overflow用户

发布于 2013-05-18 13:52:57

逐行读取文件内容并将其复制到另一个文件(临时文件)中是一个好主意,最好是随机访问文件,并省略您想要删除的行。只需将其余内容复制到临时文件中,并省略要删除的行。然后将文件重命名为原始名称。请不要样品。我需要你自己做这件事,这样你就可以自学了。祝好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11645881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档