Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File UWP-保存文件。IOException:进程无法访问文件';文件路径';因为它正被另一个进程使用_File_Uwp_Picker - Fatal编程技术网

File UWP-保存文件。IOException:进程无法访问文件';文件路径';因为它正被另一个进程使用

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

我想用UWP保存一个文件。下面是我的代码片段。 这有时有效。但有时会失败。不知道为什么? 如果要保存的文件较大或有多个文件要保存,通常会发生这种情况

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

上述代码中未定义
路径
参数。可以分享吗?你能澄清一下吗。这通常会将输入保存到本地文件中。更好的方法是为我们共享一个文件。