删除txt文件中的最后一行

本文关键字:一行 最后 txt 文件 删除 | 更新日期: 2023-09-27 18:08:11

我为datagridview编写了一个foreach循环,将所有行写入txt文件。我有一个问题,因为它在末尾添加了2个空行,因为在向数据网格视图添加/读取后,有1行充满了空单元格。有没有什么方法可以省略最后一行或删除txt中的最后一行?

foreach (DataGridViewRow item in this.DB.Rows)
{
    foreach (DataGridViewCell item2 in item.Cells)
    {   
        if(item2.Value != null)
        filewrite.Write(item2.Value.ToString() + " ");
    }
    filewrite.WriteLine("");
}

删除txt文件中的最后一行

您可以使用String.IsNullOrWhiteSpace来确保只有在单元格中有内容(例如(的情况下才能写入文件

var cellValue = item2.Value.ToString();
if (!String.IsNullOrWhitespace(cellValue)) {
    filewrite.Write(cellValue + " ");
}

实际上,使用LINQ 可以很容易地做到这一点

var rows = this.DB.Rows.Select(r => String.Join(" ", r.Cells.Select(c => c.Value)))
                       .Where(x => !String.IsNullOrWhiteSpace((string)x));
File.WriteAllLines("database.txt", rows);

您可以实现以下目标:

for(int i = 0; i< this.DB.Rows.Count-1; i++)
{
    foreach (DataGridViewCell item2 in item.Cells)
    {   
        if(item2.Value != null)
            filewrite.Write(item2.Value.ToString() + " ");
    }
    filewrite.WriteLine("");
}

如果您的数据中可能有其他空行。

foreach (DataGridViewRow item in this.DB.Rows)
{
    var printRow = false;
    foreach (DataGridViewCell item2 in item.Cells)
    {   
        if(!String.IsNullOrWhitespace(item2.Value.ToString()))
        {
            printRow = true;
            filewrite.Write(item2.Value.ToString() + " ");
        }
    }
    if (printRow)
    {
        filewrite.WriteLine("");
    }
}
private void tofile_Click(object sender, EventArgs e)
{
    string file = "database.txt";
    StreamWriter filewrite;
    filewrite = new StreamWriter(file);
    int rcount = DB.Rows.Count;
    for(int i = 0; i < this.DB.Rows.Count - 1; i++)
    {
        foreach (DataGridViewCell item2 in this.DB.Rows[i].Cells)
        {   
            if(item2.Value != null)
                filewrite.Write(item2.Value.ToString() + " ");
        }
        filewrite.WriteLine("");
    }
    filewrite.Close();
}

已解决:(