2016-04-19 1 views
7

Ich muss eine Textdatei (eingebettete Ressource) in meinem Xamarin.Forms PCL-Projekt lesen. Auf den working with files Xamarin docs schlägt er diesen Code:Wie lese ich eine Textdatei im Xamarin Forms PCL-Projekt?

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

Das Problem ist, dass ich nicht, was das LoadResourceText gibt. Alles, was ich gefunden habe, ist, dass es ein Typ in meiner Assembly ist. Aber ich kann nicht wirklich verstehen, was es bedeutet.

Und ich kann nirgendwo eine klare praktische Erklärung finden, was ich tun muss.

Irgendwelche Hilfe?

Dank

+0

https://components.xamarin.com/view/pclstorage –

+0

PCL Speicherung funktioniert nicht für vorhandene eingebettete Ressourcendateien. – Dpedrinha

Antwort

6

eine vorhandene Datei Sie LoadResourceText mit einer Klasse, die Sie in Ihrem PCL Projekt ersetzen müssen lesen. Es wird verwendet, um die Assembly abzurufen, die die eingebettete Datei enthält. Sie müssen auch WorkingWithFiles durch den Namespace Ihres PCL-Projekts ersetzen.

Sie müssen using System.Reflection; für den zu kompilierenden Code hinzufügen.

Wenn Sie eine Datei zur Laufzeit erstellen möchten und lesen Sie es später können Sie PCLStorage Library wie folgt verwenden:

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

Danke. Ich muss eine vorhandene eingebettete Ressourcendatei laden. Wenn ich LoadResourceText mit einer beliebigen Klasse in meinem Projekt ändere, beschwert es sich, dass "Type keine Definition für GetTypeInfo() enthält. Ich schaue mir das Beispielprojekt aus den Dokumenten an und LoadResourceText implementiert es auch nicht. Es ist nur eine normale ContentPage Irgendwelche Idee? – Dpedrinha

+0

@Dpedrinha: Haben Sie diesen Code im PCL-Projekt? – Giorgi

+0

Ja, in tragbaren Projekt. – Dpedrinha