如何使用XDocument在解决方案中提供文本文件的路径?

时间:2013-08-22 13:54:44

标签: c# xamarin.android xamarin

我想加载一个xml文档Swedish.xml,它存在于我的解决方案中。如何在Xamarin.android中为该文件提供路径

enter image description here

我正在使用以下代码:

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

但我收到了Exception消息:

 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");

但他们都没有奏效。出现相同的异常消息。 Build Action也设置为Content。路径怎么了?提前谢谢。

4 个答案:

答案 0 :(得分:1)

试试这个

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

 var text = File.ReadAllText(startupPath);

答案 1 :(得分:0)

...试

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

答案 2 :(得分:0)

如果您将文件标记为内容类型,它将包含在应用程序包中,其中包含您在项目文件中使用的路径。您可以检查创建的IPA文件(它只是一个重命名的zip),以验证是否发生了这种情况。

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

应该有效。文件路径相对于应用程序的根目录。您需要确保在代码中使用与实际文件使用的完全相同的大小写。在模拟器中,外壳无关紧要,但在设备上,文件系统区分大小写,不匹配的外壳会破坏应用程序。

答案 3 :(得分:0)

我之前已经研究过这个问题,从来没有找到任何以这种方式访问​​文件的解决方案。所有的道路似乎都表明将它们建成“内容”是一条死胡同。但是,您可以将它们放在“Assets”文件夹中,并以这种方式使用它们。为此,请将“内容”切换为“AndroidAsset”。

完成此操作后,您现在可以通过

调用来访问应用程序中的文件
var filename = "Sweedish.txt";
string data;
using
  (var sr = new StreamReader(Context.Assets.Open(code)))
            data = sr.ReadToEnd();
 ....