我想加载一个xml文档Swedish.xml,它存在于我的解决方案中。如何在Xamarin.android中为该文件提供路径
我正在使用以下代码:
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。路径怎么了?提前谢谢。
答案 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();
....