2017-07-25 90 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