File UWP-保存文件。IOException:进程无法访问文件';文件路径';因为它正被另一个进程使用
我想用UWP保存一个文件。下面是我的代码片段。 这有时有效。但有时会失败。不知道为什么? 如果要保存的文件较大或有多个文件要保存,通常会发生这种情况File UWP-保存文件。IOException:进程无法访问文件';文件路径';因为它正被另一个进程使用,file,uwp,picker,File,Uwp,Picker,我想用UWP保存一个文件。下面是我的代码片段。 这有时有效。但有时会失败。不知道为什么? 如果要保存的文件较大或有多个文件要保存,通常会发生这种情况 private async void Download_Click(object sender, RoutedEventArgs e) { // Clear previous returned file name, if it exists, between iterations of this scenario
private async void Download_Click(object sender, RoutedEventArgs e)
{
// Clear previous returned file name, if it exists, between iterations of this scenario
// TextBlock1.Text = "";
FileSavePicker savePicker = new FileSavePicker();
savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
// Dropdown of file types the user can save the file as
savePicker.FileTypeChoices.Add("CSV Format", new List<string>() { ".csv" });
// Default file name if the user does not type one in or select a file to replace
savePicker.SuggestedFileName = "DataBaseFile1";
StorageFile file = await savePicker.PickSaveFileAsync();
using (var stream = await file.OpenStreamForWriteAsync())
{
stream.SetLength(0);
var bytes = Encoding.ASCII.GetBytes("Content");
await stream.WriteAsync(bytes, 0, bytes.Length);
await stream.FlushAsync();
}
if (file != null)
{
// Prevent updates to the remote version of the file until we finish making changes and call CompleteUpdatesAsync.
CachedFileManager.DeferUpdates(file);
// write to file
// await FileIO.WriteTextAsync(file, "Example file contents.");
using (var stream = File.Open(path, FileMode.Open, FileAccess.Write, FileShare.ReadWrite))
{
await FileIO.WriteTextAsync(file, AllRecordsTitle_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, IDTitle_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, ID_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, FirstNameTitle_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, FirstName_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, LastNameTitle_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, LastName_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, TelNo1Title_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, TelNo1_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, TelNo2Title_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, TelNo2_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, EmailTitle_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, Email_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, AddressTitle_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, Address_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, DetailsTitle_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
await FileIO.AppendTextAsync(file, Details_TBlock.Text);
await FileIO.AppendTextAsync(file, "\n");
}
// Let Windows know that we're finished changing the file so the other app can update the remote version of the file.
// Completing updates may require Windows to ask for user input.
FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);
if (status == FileUpdateStatus.Complete)
{
// TextBlock1.Text = "File " + file.Name + " was saved.";
var dialog1 = new Windows.UI.Popups.MessageDialog(" File " + file.Name + " was saved. ");
await dialog1.ShowAsync();
}
else if (status == FileUpdateStatus.CompleteAndRenamed)
{
// TextBlock1.Text = "File " + file.Name + " was renamed and saved.";
var dialog2 = new Windows.UI.Popups.MessageDialog(" File " + file.Name + " was renamed and saved. ");
await dialog2.ShowAsync();
}
else
{
// TextBlock1.Text = "File " + file.Name + " couldn't be saved.";
var dialog3 = new Windows.UI.Popups.MessageDialog("File " + file.Name + " couldn't be saved.");
await dialog3.ShowAsync();
}
}
else
{
// TextBlock1.Text = "Operation cancelled.";
var dialog4 = new Windows.UI.Popups.MessageDialog("Operation cancelled.");
await dialog4.ShowAsync();
}
}
}
private async void下载\u单击(对象发送方,RoutedEventArgs e)
{
//在此场景的迭代之间,清除以前返回的文件名(如果存在)
//TextBlock1.Text=“”;
FileSavePicker savePicker=新FileSavePicker();
savePicker.SuggestedStartLocation=PickerLocationId.DocumentsLibrary;
//用户可以将文件保存为的文件类型下拉列表
savePicker.FileTypeChoices.Add(“CSV格式”,新列表(){.CSV});
//如果用户未键入文件名或未选择要替换的文件,则为默认文件名
savePicker.SuggestedFileName=“DataBaseFile1”;
StorageFile file=wait savePicker.PickSaveFileAsync();
使用(var stream=await file.OpenStreamForWriteAsync())
{
stream.SetLength(0);
var bytes=Encoding.ASCII.GetBytes(“内容”);
wait stream.WriteAsync(字节,0,字节.长度);
等待stream.FlushAsync();
}
如果(文件!=null)
{
//在完成更改并调用CompleteUpdatesAsync之前,禁止更新文件的远程版本。
CachedFileManager.DeferUpdates(文件);
//写入文件
//等待FileIO.WriteTextAsync(文件,“示例文件内容”);
使用(var stream=File.Open(路径,FileMode.Open,FileAccess.Write,FileShare.ReadWrite))
{
等待FileIO.WriteTextAsync(文件,AllRecordsTitle_TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件“\n”);
wait FileIO.AppendTextAsync(文件,IDTitle\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
wait FileIO.AppendTextAsync(文件,ID_TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,FirstNameTitle\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件名为FirstName\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,LastNameTitle\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,LastName\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,TelNo1Title\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,TelNo1_TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,TelNo2Title\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,TelNo2_TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,EmailTitle\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,Email\TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,地址title\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,地址为\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
等待FileIO.AppendTextAsync(文件,DetailsTitle\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
wait FileIO.AppendTextAsync(文件,Details\u TBlock.Text);
等待FileIO.AppendTextAsync(文件“\n”);
}
//让Windows知道我们已完成更改文件,以便其他应用程序可以更新文件的远程版本。
//完成更新可能需要Windows请求用户输入。
FileUpdateStatus status=await CachedFileManager.CompleteUpdatesAsync(文件);
if(status==FileUpdateStatus.Complete)
{
//TextBlock1.Text=“文件”+文件名+”已保存。“;
var dialog1=new Windows.UI.Popups.MessageDialog(“文件”+File.Name+“已保存”);
等待对话框1.ShowAsync();
}
else if(状态==FileUpdateStatus.CompleteAndRename)
{
//TextBlock1.Text=“File”+File.Name+”已重命名并保存。“;
var dialog2=new Windows.UI.Popups.MessageDialog(“文件”+File.Name+“已重命名并保存”);
等待对话框2.ShowAsync();
}
其他的
{
//TextBlock1.Text=“文件”+文件名+“无法保存。”;
var dialog3=new Windows.UI.Popups.MessageDialog(“文件”+File.Name+“无法保存”);
等待对话框3.ShowAsync();
}
}
其他的
{
//TextBlock1.Text=“操作已取消。”;
var dialog4=newwindows.UI.Popups.MessageDialog(“操作已取消”);
等待对话框4.ShowAsync();
}
}
}
上述代码中未定义路径
参数。可以分享吗?你能澄清一下吗。这通常会将输入保存到本地文件中。更好的方法是为我们共享一个文件。