我使用listView显示用户完成的条目,并根据输入的值突出显示这些条目。在listView中写入一行后,我将同一行文本保存到文件中。不幸的是,当我写入文件时,我会覆盖已经存在的内容。我需要将最新的行追加到文件的末尾,否则每次用户添加条目时我都必须编写整个列表。
以下是我到目前为止所处理的一些案例以及是否为了简洁而删除了陈述。
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
if(tbSystolic.Text != "" && tbDiastolic.Text != "") {
string bpLevel = "";
if(Convert.ToInt32(tbSystolic.Text) < 90 || Convert.ToInt32(tbDiastolic.Text) < 60) bpLevel = "Lo";
//[other if statements removed to save space...]
string row = tbSystolic.Text+"/"+tbDiastolic.Text+" "+bpLevel+" @ "+tpTime.Time+" on "+dpDate.Date.ToString("MM/dd/yyyy");
ListViewItem item = new ListViewItem();
item.Content = row;
//[other stuff done to 'item' removed to save space...]
lvReadings.Items.Insert(0,item);
saveReadings(row);
}
}
async void saveReadings(string row)
{
StorageFile readingsFile = await localFolder.CreateFileAsync(READINGSFILE, CreationCollisionOptin.OpenIfExists);
await FileIO.WriteTextAsync(readingsFile,row);
}
我认为最后一行是实际问题所在。我想将行添加到最后。如果那不可能,那就没事了。我只是想确定一下。我没有看到任何打开不需要异步的文件的方法,我只能添加&#34; async&#34;到MainPage:Page。
答案 0 :(得分:4)
只需拨打AppendTextAsync
而不是WriteTextAsync
。
async void saveReadings(string row)
{
StorageFile readingsFile = await localFolder.CreateFileAsync(READINGSFILE, CreationCollisionOptin.OpenIfExists);
await FileIO.AppendTextAsync(readingsFile,row);
}