2017-07-25 88 views
0

我需要在內存中存儲一​​個字節[]。我需要稍後訪問它。字節[]代表​​一個視頻。以下代碼將允許將文件寫入內存,以及從內存訪問。當調用下面顯示的remove方法時,它仍然可以稍後訪問。Xamarin.Forms在運行時刪除文件iOS

我已檢查路徑名是否相同。

 public void StoreVideo(byte[] video, string filename) 
     { 
      var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
      var directoryname = Path.Combine(documents, "Videos"); 
      Directory.CreateDirectory(directoryname); 
      var path = Path.Combine(directoryname, filename); 
      File.WriteAllBytes(path, video); 
     } 

     public void RemoveVideo(string filename) 
     { 
      var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
      var directoryname = Path.Combine(documents, "Videos"); 
      var path = Path.Combine(directoryname, filename); 
      File.Delete(filename); 
     } 

     public byte[] GetVideo(string filename) 
     { 
      var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
      var directoryname = Path.Combine(documents, "Videos"); 
      var path = Path.Combine(directoryname, filename); 

      if(File.Exists(path)) 
      { 
       return File.ReadAllBytes(path); 
      } 
      return null; 
     } 
+0

File.Delete應該在用戶可寫文件夾上正常工作。你檢查過拋出的異常嗎?在File.Delete調用之後使用File.Exists來檢查怎麼辦? – Jason

+0

感謝您的回覆。這給了更奇怪的行爲。作爲RemoveVideo中的最後一行,將File.Exists(文件名)分配給布爾,結果爲「false」。 – NPC

+0

關於這個奇怪的部分是GetVideo在這次調用後仍然有效。這些方法按照上面列出的順序調用 – NPC

回答

0

答案就是傳遞給File.Delete方法的路徑上的一個小腦袋。但是對於遇到這種情況的用戶應該知道,如果File.Delete不能刪除文件,它不會拋出任何異常。包裝File.Delete方法應該是一個很好的做法。檢查File.Exists