windows运行时-使用c#删除文本文件中的特定行
本文关键字:文件 文本 运行时 使用 删除 windows | 更新日期: 2023-09-27 17:57:32
我正在为windows 8桌面构建一个应用程序,我正在阅读一个文本文件,我想更改一行,但不确定如何更改,所以我有一个文本文档,上面写着
username|false
username|false
username|false
当事情发生时,我想去掉中间线,这就是我迄今为止所拥有的;
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile storageFile = await folder.GetFileAsync("students.txt");
var text = await Windows.Storage.FileIO.ReadLinesAsync(storageFile);
var list_false = "";
foreach (var line in text)
{
string name = "" + line.Split('|')[0];
string testTaken = "" + line.Split('|')[1];
if (your_name.Text == name)
{
if (testTaken == "false") {
pageTitle.Text = name;
enter_name_grid.Opacity = 0;
questions_grid.Opacity = 1;
var md = new MessageDialog("Enjoy the test");
await md.ShowAsync();
}
else
{
the_name.Text = "You have already taken the test";
var md1 = new MessageDialog("You have already taken the test");
await md1.ShowAsync();
}
return;
}
else
{
list_false = "You're not on the list";
}
}
if (list_false == "You're not on the list") {
var md2 = new MessageDialog("You're not on the list");
await md2.ShowAsync();
}
请帮忙,它的名字读得很好,可以让他们参加测试,我只需要它删除正确的行。提前感谢!!
需要考虑的重要事项是修改文件。因此,无论您选择更改什么,都需要将其写回文件中。
在你选择将整个文件读入内存的情况下,这实际上对你有利,因为你可以删除任何不需要的行并写回文件。但是,在使用foreach
循环遍历列表时,不能删除项目。
从正在循环的数组中删除项的最佳实践是使用for
循环并反向循环。如果我们也使用List<string>
,它也可以更容易地删除项目,比如:
var list = new List<string>(text);
for(int i = text.Length - 1; i >=0; i--)
{
string line = text[i];
//rest of code
}
text = list.ToArray();
任务的下一部分是删除该行。您可以在else
语句中执行此操作,因为这是处理已经参加测试的用户的部分。例如:
the_name.Text = "You have already taken the test";
list.RemoveAt(i);
最后,在循环之后,您需要将整个内容写回文件:
await Windows.Storage.FileIO.WriteLinesAsync(storageFile, text);
读取文件时,可以将内容存储在列表中。当你的"某事发生"时,你可以删除适当索引处的内容,并将列表保存(覆盖)到文件中。