2013-08-22 31 views
1

我想加載一個xml文檔Swedish.xml,它存在於我的解決方案中。我怎樣才能給路徑,該文件在Xamarin.android如何使用XDocument爲解決方案中的文本文件提供路徑?

enter image description here

我使用下面的代碼:

var text = File.ReadAllText("Languages/Swedish.txt"); 
Console.WriteLine("text: "+text); 

但我得到異常消息:

Could not find a part of the path "//Languages/swedish.txt". 

我甚至嘗試以下幾行:

var text = File.ReadAllText("./Languages/Swedish.txt"); 

var text = File.ReadAllText("./MyProject/Languages/Swedish.txt"); 

var text = File.ReadAllText("MyProject/Languages/Swedish.txt"); 

但他們都沒有工作。相同的例外信息正在出現。構建操作也被設置爲內容。路徑有什麼問題?提前致謝。

+1

確實Swedish.xml嘗試有它的生成操作設置爲「內容」? – Jason

+0

不,我現在做了,現在它的give目錄沒有發現異常。感謝幫助。但路徑有什麼問題? – Piscean

回答

0

的Try ...

Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments)+"/Languages/Swedish.txt" 
+0

這隻有在他將文件寫入MyDocuments時纔有效。只需將文件打包爲IDE中的內容就不會將其複製到MyDocuments或任何其他特殊文件夾。 – Jason

+0

它將其複製到應用程序文件夾。我意識到。但如果我沒有記錯,當我使用MyDocuments或其他特殊環境文件夾時,我正在寫入應用程序安裝位置.. –

0

如果文件標記爲內容類型,它會被包含在與您使用的項目文件中的路徑的應用程序包。您可以檢查創建的IPA文件(它只是一個重命名的zip),以驗證是否發生了這種情況。

var text = File.ReadAllText("Languages/Swedish.txt"); 

應該工作。文件路徑是相對於您的應用程序的根。您需要確保您的代碼中使用了與實際文件相同的外殼。在模擬器中,外殼並不重要,但在設備上文件系統區分大小寫,而外殼不匹配會破壞應用程序。

+0

不適用於我.. –

0

我已經看過這個之前,並沒有發現任何解決方案來訪問這種方式的文件。所有的道路似乎都表明建造它們是因爲「內容」是死路一條。但是,您可以將它們放置在「資產」文件夾中,並以這種方式使用它們。爲此,請將「內容」切換爲「AndroidAsset」。

你這樣做了之後,你可以通過調用它通過

var filename = "Sweedish.txt"; 
string data; 
using 
    (var sr = new StreamReader(Context.Assets.Open(code))) 
      data = sr.ReadToEnd(); 
.... 
1

現在訪問你的應用程序中的文件只是這個

string startupPath = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName, "Languages", "Swedish.txt"); 

var text = File.ReadAllText(startupPath); 
相關問題