2015-04-01 81 views
0

你可以幫我懷疑我有嗎?Xamarin StreamWriter

我有一個嵌入式資源文本文件,當我嘗試使用streamWriter在其上寫入時,出現此錯誤:「引發了System.ArgumentException,無法寫入流。

這是代碼:

var assembly = Assembly.GetExecutingAssembly(); 
var resourceName = "SuperMimo2.Products.txt"; 
using (Stream stream = assembly.GetManifestResourceStream(resourceName)) 
using (StreamWriter writer = new StreamWriter(stream)) 
{ 
    writer.WriteLine(txtLines.Text); 
} 

你能告訴我,我該怎麼辦?

感謝您的關注!

+4

你想完成什麼?您無法寫入嵌入式資源。不是你認爲這會做什麼。 – usr 2015-04-01 15:57:42

+0

而不是嵌入式資源我應該將文件設置爲什麼生成操作? – 2015-04-01 16:09:52

回答

2

Android和iOS軟件包/軟件包已簽名且不可寫入。要寫入文件,必須使用操作系統提供的適當文件系統文件夾之一。

適用於iOS,請參閱本指南:

http://developer.xamarin.com/guides/ios/application_fundamentals/working_with_the_file_system/

爲Android,你可以做

var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
var filename = Path.Combine(path, my_file_name); 

如果你想包括與您的應用程序文件,並寫入它,你首先需要將它作爲資源包含在你的應用程序包中。然後,您需要將其複製到可寫文件夾中,以便對其進行任何更改。

// read the data from the Asset 
using (StreamReader sr = new StreamReader (Assets.Open ("read_asset.txt"))) 
    { 
     content = sr.ReadToEnd(); 
    } 

// get a writable file path 
var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
var filename = Path.Combine(path, "write_asset.txt"); 

// write the data to the writable path - now you can read and write it 
File.WriteAllText(filename, content); 
+0

我現在可以做什麼?該程序在其執行期間寫入該文件,但之後該文件不保存已寫入的內容。 – 2015-04-05 17:14:36

+0

你如何檢查文件的內容?你使用一些文件瀏覽器工具?或通過再次運行應用程序來檢查它?或者你在寫完內容後立即閱讀內容? – Jason 2015-04-05 18:22:54

+0

我正在使用「手錶」工具。 – 2015-04-05 18:53:21