使用写入文件异步追加到文件



我正在使用listView来显示用户完成的条目,并根据输入的值突出显示它们。将一行写入列表视图后,我将同一行文本保存到文件中。不幸的是,当我写入文件时,我覆盖了已经存在的内容。我需要将我的最新行附加到文件的末尾,或者每次用户添加条目时都必须写入整个列表。

以下是我到目前为止对某些情况以及为简洁起见删除了 if 语句的情况。

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

我想最后一行是实际问题所在。我想把这一行加到最后。如果这是不可能的,那也没关系。我只是想确定一下。我没有看到任何方法可以打开不需要异步的文件,而且我不能只是将"异步"添加到主页:页面。

只需调用 AppendTextAsync 而不是 WriteTextAsync 即可。

async void saveReadings(string row)
{
  StorageFile readingsFile = await localFolder.CreateFileAsync(READINGSFILE, CreationCollisionOptin.OpenIfExists);
  await FileIO.AppendTextAsync(readingsFile,row);
}

最新更新