Reputation: 423
My code looks like below:
private void LayoutRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
// TODO: Add event handler implementation here.
try
{
string fileName = NavigationContext.QueryString["id"];
DataSaver<SampleData> mypersonaldata = new DataSaver<SampleData>();
var PersonData = mypersonaldata.LoadMyData(fileName);
txtName.Text = PersonData.Name;
txtAge.Text = PersonData.Age;
txtheight.Text = PersonData.Height;
txtMammals.Text = PersonData.FavMammals;
txtBirds.Text = PersonData.FavBirds;
txtReptiles.Text = PersonData.FavReptiles;
}
catch
{
MessageBox.Show("Unable to read!");
}
}
Here is my code for loading data:
public MyDataType LoadMyData(string sourceName)
{
MyDataType retVal = default(MyDataType);
string TargetFileName = String.Format("{0}/{1}.dat", TargetFolderName, sourceName);
if (IsoFile.FileExists(TargetFileName))
using (var sourceStream = IsoFile.OpenFile(TargetFileName, FileMode.Open))
{
retVal = (MyDataType)_mySerializer.ReadObject(sourceStream);
}
return retVal;
}
I am able to access the member of the DataSaver.cs and SampleData.cs. I am getting the correct filename also but unable to read the data. Please help!
public void SaveMyData(MyDataType sourceData)
{
string TargetFileName = String.Format("{0}/{1}.dat", TargetFolderName, targetFileName);
if (!IsoFile.DirectoryExists(TargetFolderName))
IsoFile.CreateDirectory(TargetFolderName);
try
{
using (var targetFile = IsoFile.CreateFile(TargetFileName))
{
_mySerializer.WriteObject(targetFile, sourceData);
}
}
catch (Exception e)
{
IsoFile.DeleteFile(TargetFileName);
}
}
The above code is for saving data into Isolated Storage.
Upvotes: 2
Views: 546
Reputation: 5152
These two static methods should help you in any read/write operation from/to WP Isolated Storage.
public static void WriteStreamToFile(MemoryStream stream, string baseFileName, string extension, out string realFileName)
{
realFileName = String.Empty;
if (stream != null)
using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
baseFileName = GlobalSettings.NormalizeFileName(baseFileName);
realFileName = String.Concat(baseFileName, extension);
using (IsolatedStorageFileStream fileStream = appStorage.OpenFile(realFileName, FileMode.Create, FileAccess.Write))
stream.WriteTo(fileStream);
}
}
public static void ReadStreamFromFile(MemoryStream stream, string fileName)
{
if (stream != null)
using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream fileStream = appStorage.OpenFile(fileName, FileMode.Open, FileAccess.Read))
fileStream.CopyTo(stream);
}
And then, you can serialize everything you want:
public static object DeserializeObject(string fileName, Type objectType)
{
using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream fileStream = appStorage.OpenFile(fileName, FileMode.Open, FileAccess.Read))
using (TextReader xmlReader = new StreamReader(fileStream))
{
XmlSerializer xmlSerializer = new XmlSerializer(objectType);
return xmlSerializer.Deserialize(xmlReader);
}
}
public static void SerializeObject(string fileName, object target, Type objectType)
{
using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream fileStream = appStorage.OpenFile(fileName, FileMode.Create, FileAccess.Write))
using (TextWriter xmlWriter = new StreamWriter(fileStream))
{
XmlSerializer xmlSerializer = new XmlSerializer(objectType);
xmlSerializer.Serialize(xmlWriter, target);
}
}
Upvotes: 1