将文件复制到新文件夹中

时间:2014-10-08 21:29:46

标签: c# windows file xaml copy

我在处理文件时遇到问题。我需要复制.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中复制文件的另一种方法,如果你知道是什么问题或其他方式这样做我将非常感激。

2 个答案:

答案 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如果因任何原因在任何时候失败。

那本质上会复制文件,我注意到你试图读取本地应用程序文件夹。请注意,当它位于操作系统中的多个位置时,通常需要管理员权限