1

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

    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

谢谢...

4

3 回答 3

3

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

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); 
    }
}
于 2012-07-25T09:04:43.717 回答
1

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

String lineToRemove = "AdlawanJan2012";


……

String trimmedLine = currentLine.trim();
if(trimmedLine.substring(0, 14).equals(lineToRemove)) {
    //Your deletion logic
}
于 2012-07-25T09:09:14.820 回答
0

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

于 2013-05-18T05:52:57.193 回答