如何使用VS& amp;读取资产文件MonoDroid的

时间:2012-03-02 20:51:10

标签: xamarin xamarin.android assets

我一直在尝试使用C#和Monodroid来实现这个示例,但是在阅读和编写资产文件时遇到了困难:

http://docs.xamarin.com/android/advanced_topics/using_android_assets

我使用的是模拟器,而不是设备。

首先,我无法找到Assets.Open的命名空间。我最终找到的是

const string lfn  = MyAssetFile.txt;
System.IO.StreamReader(Android.Content.Res.Resources.System.Assets.Open(lfn);

这是正确的命名空间吗?

其次,我的资产文件在VS“属性”窗格中被标记为AndroidAsset和“始终复制”,但我尝试使用此语句读取文件总是失败(找不到文件):

string  settings = "";
using (StreamReader sr = new System.IO.StreamReader (Android.Content.Res.Resources.System.Assets.Open(lfn))) settings   =   sr.ReadToEnd();

我的VS设置是否错误,以至于资产文件没有被复制到模拟器上,或者是否正在被复制,但是我的代码打开/读取它是错误的?

2 个答案:

答案 0 :(得分:9)

您必须使用:

const string lfn = "MyAssetFile.txt";
string settings = string.Empty;

// context could be ApplicationContext, Activity or
// any other object of type Context
using (var input = context.Assets.Open(lfn))
using (StreamReader sr = new System.IO.StreamReader(input))
{
    settings = sr.ReadToEnd();
}

如果我没记错,由于我目前还没有IDE,Android.Content.Res.Resources.System.Assets引用了 Android 资产而不是项目资产。您希望使用 项目资产,因此您需要使用AssetManagerActivities中的Contexts

例如:Activity类有一个名为Assets的属性。这就是你使用的。或者您使用View的{​​{1}}属性。

答案 1 :(得分:-4)

或者只是简单地添加到顶部:

  

使用System.IO;

它会起作用。

Xamarin团队有时会忘记提及using的东西。