删除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("");
}
您可以使用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();
}
已解决:(