C# 删除txt文件中的最后一行

C# 删除txt文件中的最后一行,c#,datagridview,C#,Datagridview,我为datagridview编写了一个foreach循环,将所有行写入txt文件。 我有一个问题,因为它在末尾添加了两个空行,因为在添加/读取到datagrid视图后,一行充满了空单元格。 有没有办法省略最后一行或在txt中删除它 foreach (DataGridViewRow item in this.DB.Rows) { foreach (DataGridViewCell item2 in item.Cells) { if(item2.Value !=

我为datagridview编写了一个foreach循环,将所有行写入txt文件。 我有一个问题,因为它在末尾添加了两个空行,因为在添加/读取到datagrid视图后,一行充满了空单元格。 有没有办法省略最后一行或在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("");
}

您可以实现以下目标:

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("");
}
for(int i=0;i
您可以使用确保只有在单元格中有内容时才向文件写入,例如

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);

以防您的数据中可能有其他空行

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\单击(对象发送者,事件参数e)
{
string file=“database.txt”;
StreamWriter文件写入;
filewrite=新的StreamWriter(文件);
int rcount=DB.Rows.Count;
for(int i=0;i

已解决:)

不会像这样工作。item2.Value不是字符串,item2.Value.ToString()不起作用neither@user3658127我猜它不起作用,因为您执行
filewrite.WriteLine(“”)行。@user3658127已为
ToString
更新。如果您是说检查不起作用,那么很明显是因为
item2.Value
包含某些内容。如果您的意思是最后仍然有一个空行…是的,您会这样做,因为在循环之后有
filewrite.WriteLine(“”
)。您的问题是“如何停止2个空行”-此代码将阻止空行被输出,但不会阻止结尾的空行,因为您似乎是故意这样做的。我在阅读方法中正确处理了1个空行,需要删除第二个空行,已经解决了:)我的问题没有涉及最后一行,我在Demand上使用了它。我不知道为什么它仍然说item2.Value是无效参数
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();
}