我在处理文件时遇到问题。我需要复制.db文件并将其放在一个新文件夹中(名为"目录",之前使用FolderPicker选择)。 我拥有的代码是:(这适用于Windows 8.1的商店应用程序)
try{
StorageFile newDB = await StorageFile.GetFileFromPathAsync(directory);
StorageFile originalDB = await StorageFile.GetFileFromPathAsync(Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "AFBIT.db"));
await newDB.CopyAndReplaceAsync(originalDB);
}
catch(Exception ex){
}
我在neDB中有一个例外,并说"价值不在预期的范围内。" 我不知道在xaml中复制文件的另一种方法,如果你知道是什么问题或其他方式这样做我将非常感激。
答案 0 :(得分:2)
我有一些类似我目前在复制文件CopyFileAsync
方法时使用的方法,看看这是否可以帮助您将代码重构为工作模型
public static async Task CopyFileAsync(string sourcePath, string destinationPath)
{
try
{
using (Stream source = File.Open(sourcePath, FileMode.Open))
{
using (Stream destination = File.Create(destinationPath))
{
await source.CopyToAsync(destination);
}
}
}
catch (IOException io)
{
HttpContext.Current.Response.Write(io.Message); //I use this within a web app change to work for your windows app
}
}
答案 1 :(得分:1)
我不确定你真正的询问,但我相信你的尝试是:
public static bool CopyFile(string source, string destination)
{
if(!File.Exist(source))
return false;
if(string.IsNullOrEmpty(destination))
return false;
try
{
using(var reader = File.Open(source))
using(var writer = File.Create(destination))
reader.CopyTo(writer);
return true;
}
catch(IOException ex) { return false; }
}
请记住这会占用您的例外,然后return false
如果因任何原因在任何时候失败。
那本质上会复制文件,我注意到你试图读取本地应用程序文件夹。请注意,当它位于操作系统中的多个位置时,通常需要管理员权限。