2012-10-29 37 views
0

我想在我的HTML文件中寫入ASSETS文件夾。在ASSETS文件夾中寫入

請注意,因爲我的HTML與其他文件/文件夾有關,所以我無法使用個人文件夾。我必須在

資產/ HTML/mycharts.html寫

[MY WRITING code below return these errors 

System.IO.File.WriteAllText("file:///android_asset/myGraphs/BarGraph.html", s); 

] 

錯誤

UNHANDLED EXCEPTION: System.IO.DirectoryNotFoundException: Could not find a part of the path "//file:///android_asset/myGraphs/BarGraph.html". 
at System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,bool,System.IO.FileOptions) <0x00208> 
at System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) <0x00057> 
at System.IO.StreamWriter..ctor (string,bool,System.Text.Encoding,int) <0x00087> 
at System.IO.StreamWriter..ctor (string,bool,System.Text.Encoding) <0x00037> 
at 


] 
+0

我能想到的最佳方法是從您的資產流式複製到您的文件,並在文件中引用您的HTML,而不是在您的資產中。 –

+0

正確無誤地從資產流出。但更重要的是,我想不時在運行時動態更新我的資產?順便說一下,我們可以從(ASSETS/CONTENT/MYHTMLFILE.html)的其他地方託管HTML文件並使用WEBVIEW訪問它們? – Nicks

回答

0

這是不可能寫入資產的文件夾或在那裏編輯的任何文件。它是隻讀的。

編輯: 正如評論建議是先在你的資產,你的HTML並在需要時,他們要麼在SD卡或私有存儲設備保存。

存儲文件的SD卡上,你可以得到的路徑,SD卡,像這樣:

var folder = Android.OS.Environment.ExternalStorageDirectory + Java.IO.File.Separator + "MyAppFolder"; 

"MyAppFolder"可以是你希望它是什麼,只要它不衝突與一些SD卡上的其他文件夾名稱,因此請務必檢查它是否已存在。再加上一個文件名,如下所示:

var extFileName = folder + Java.IO.File.Separator + "MyFile.txt"; 

現在寫東西的文件:

if (!Directory.Exists(folder)) 
    Directory.CreateDirectory(folder); 
using (var fs = new FileStream(extFileName, FileMode.OpenOrCreate)) 
{ 
    var buf = Encoding.ASCII.GetBytes("Hello, world!"); 
    fs.Write(buf, 0, buf.Length); 
} 

如果你想存儲在內部存儲數據,你可以得到的路徑與私有存儲設備:

var folder = Environment.GetFolderPath(Environment.SpecialFolder.Personal); 
+0

是的,我同意。看來你只能在設計時將資產存放在ASSETS並訪問它們。您不能在運行時寫信給ASSETS。 – Nicks

0

我實現了這一基於關閉與該代碼將上述溶液:

   using (StreamReader sr = new StreamReader(this.contextCalledFrom.Assets.Open("pdfreport.html"))) 
      html = sr.ReadToEnd(); 

      MemoryStream memoryStream = new MemoryStream(); 
      client.convertHtml(html, memoryStream); 

      var folder = Android.OS.Environment.ExternalStorageDirectory + Java.IO.File.Separator + "wpfolder"; 

      if (!Directory.Exists(folder)) 
       Directory.CreateDirectory(folder); 

      var extFileName = folder + Java.IO.File.Separator + "report.pdf"; 

      using (FileStream file = new FileStream(extFileName, FileMode.Create, FileAccess.Write)) 
      { 
       memoryStream.WriteTo(file); 
      } 
相關問題