2016-09-15 854 views
-3

我已设置访问文档文件夹的权限。无法使用UWP将文件移动到其他文件夹

我能够访问存储在文档中的文件夹中的文件。

我不明白为什么下面的代码不工作。

public static async void CopyTheFile(StorageFolder _subfolder, string strfilenm) 
{ 
    try 
    { 
     string strPathTarget = @"C:\Users\xxx-user\Documents\MyTravel"; 

     StorageFolder Bufolder = await StorageFolder.GetFolderFromPathAsync(strPathTarget); 

     var targetFile = await _subfdl.GetFileAsync(strfilenm);    

     await targetFile.CopyAsync(Bufolder, strfilenm, NameCollisionOption.ReplaceExisting); 

     await targetFile.DeleteAsync(); 
    } 
    catch (Exception ex) 
    { 

    } 

} 

此文件夹我已手动创建,现在我需要访问它并将旧文件移动到此处。

string strPathTarget = @"C:\Users\xxx-user\Documents\MyTravel"; 
+1

“不工作”是什么意思?例外?如果是这样,那是什么? – gregkalapos

+0

由于此方法为async,因此无法使用void:await StorageFolder.GetFolderFromPathAsync(strPathTarget)。因此,完全没有错误。 – MilkBottle

+0

[永远不要使用async void](http://haacked.com/archive/2014/11/11/async-void-methods/)。 – Bart

回答

0

您应该使用KnownFolders.DocumentsLibrary代替string strPathTarget = @"C:\Users\xxx-user\Documents\MyTravel;

像这样:

public static async void CopyTheFile(StorageFolder _subfolder, string strfilenm) { 
      try { 
       StorageFolder Bufolder = await KnownFolders.DocumentsLibrary.GetFolderAsync("MyTravel") ; 
       var targetFile = await _subfolder.GetFileAsync(strfilenm); 
       await targetFile.CopyAsync(Bufolder, strfilenm, NameCollisionOption.ReplaceExisting); 

       await targetFile.DeleteAsync(); 

      } catch (Exception ex) { 

      } 

     } 

不要忘了,你需要的文件assosiations当你在目录中访问文件。见here

+0

奇怪的是没有工作。无法获取错误消息! – MilkBottle

+0

你可以设置一个断点到catch行的结束并告诉什么是异常? – gregkalapos

+0

我试过了,它不会停在那里,它跳过!我正在阅读文件,因为它们进入循环。当找到一个文件时,我使用上面的方法将它移动到其他文件夹。 – MilkBottle

相关问题