2012-03-02 26 views
5

Tôi đã cố gắng để thực hiện ví dụ này sử dụng C# và Monodroid, nhưng đang gặp khó khăn đọc và viết một tập tin tài sản:Làm thế nào để đọc tài sản tập tin sử dụng VS & Monodroid

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

Tôi đang sử dụng giả lập, không phải thiết bị.

Trước hết, tôi gặp sự cố khi tìm không gian tên cho Assets.Open. Những gì tôi tìm thấy cuối cùng là

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

Đây có phải là không gian tên chính xác không?

Thứ hai, tập tin tài sản của tôi được đánh dấu là AndroidAsset và "Copy Luôn luôn" trong VS "Properties" cửa sổ, nhưng những nỗ lực của tôi để đọc các tập tin luôn luôn thất bại (File Not Found) sử dụng câu lệnh:

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

Tôi có cài đặt VS của mình sai sao cho tệp nội dung không được sao chép vào trình mô phỏng hay đang được sao chép OK nhưng mã của tôi để mở/đọc nó sai?

+0

Đừng quên đặt hành động xây dựng cho tệp nội dung trong thuộc tính VS: BuildAction: AndroidAsset – AndyM

Trả lời

9

Bạn phải sử dụng:

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(); 
} 

Nếu tôi nhớ không lầm thì như tôi đã không có một IDE vào lúc này, Android.Content.Res.Resources.System.Assets tài liệu tham khảo các Android tài sản không tài sản dự án của bạn. Bạn muốn sử dụng tài sản dự án của mình để bạn cần sử dụng số AssetManager từ số Activities hoặc Contexts của mình.

Ví dụ: lớp Activity có thuộc tính được gọi là Assets. Đây là những gì bạn sử dụng. HOẶC bạn sử dụng tài sản 's Context.Assets.

+0

Cảm ơn, hoạt động tuyệt vời. –

-4

Hoặc chỉ đơn giản là thêm ở phía trên:

using System.IO;

và nó sẽ hoạt động.

Nhóm Xamarin quên đôi khi đề cập đến công cụ using.

Các vấn đề liên quan