2016-04-27 13 views
0

PCL、iOS、Androidプロジェクトを使用してXamarin.Formsプロジェクトを構築しています。私の要件の1つは、PCLからプラットフォームプロジェクト(iOS/Android)に保存されているJSONファイルを読み込む必要があることです。Xamarin.Forms(PCLコードでプラットフォームプロジェクトからファイルを読み込み)

どうすればいいですか?私はこの問題の解決策を見つけることができません。必ずことを確認してください

var assembly = typeof(MyPage).GetTypeInfo().Assembly; 
Stream stream = assembly.GetManifestResourceStream("WorkingWithFiles.PCLTextResource.txt"); 
string text = ""; 
using (var reader = new System.IO.StreamReader (stream)) { 
    text = reader.ReadToEnd(); 
} 

:あなたが読みたいファイルはプラットフォームプロジェクトのアセンブリに埋め込まれている場合:(

では、次のコードを使用することができ、非常に ニコライ

答えて

2

をありがとうWorkingWithFilesをプロジェクト名空間およびPCLTextResource.txtに置き換えてください。

XamarinのドキュメントをLoading Files Embedded as Resourcesで確認してください。

一方で、あなたがPCLStorageライブラリを使用することができます作成​​し、読み/実行時にファイルを書き込みたい場合はは:

public async Task PCLStorageSample() 
{ 
    IFolder rootFolder = FileSystem.Current.LocalStorage; 
    IFolder folder = await rootFolder.CreateFolderAsync("MySubFolder", 
     CreationCollisionOption.OpenIfExists); 
    IFile file = await folder.CreateFileAsync("answer.txt", 
     CreationCollisionOption.ReplaceExisting); 
    await file.WriteAllTextAsync("42"); 
} 
+0

こんにちはジョルジョ、私は上記を試しました。残念ながら動作しません。上記のコードは、ファイルがPCLの埋め込みリソースである場合にのみ有効です。一方、私は、PCLコードでiOSプロジェクトに保存されているファイルを読みたいと思っています。何か案は?ありがとう – Nik

+0

@ user2118781:ファイルをPCLに埋め込むことはできますか? – Giorgi

1

私はIoCコンテナを使用して作業それを得ました。

私はConfigAccessクラスを作成している私のiOSプロジェクトで

public class ConfigAccess : IConfigAccess 
{ 
    public string ReadConfigAsString() 
    { 
     return System.IO.File.ReadAllText("config.json"); 
    } 
} 

私も私のAppDelegate.csに

SimpleIoc.Default.Register<IConfigAccess, ConfigAccess>(); 

を次の行を追加する必要がありましたそして、私のPCLに、私は単純に求めています実行時のConfigAccessオブジェクトの場合:

var configAccess = SimpleIoc.Default.GetInstance<IConfigAccess>(); 
var test = configAccess.ReadConfigAsString(); 
関連する問題