Так что я использую protobuff.net для сериализации и десриализации данных в файл и из него. Проблема в том, что методы Desirialize и Serialize из protobuff берут поток в качестве аргумента. До сих пор я использовал System.IO.FileStream
, но так как я портирую игру для работы в магазине Windows и телефоне Windows, мне нужно использовать Windows.Storage
и Windows.Storage.Streams
. Вопрос в том, как создать поток из файла в приложении Windows Phone.Как получить поток из окна телефона API
Это код для загрузки:
public static T LoadObjectFromPath<T>(string path)
{
if (!File.Exists(path))
{
return default(T);
}
T deserializedObject = default(T);
#if !NETFX_CORE
using(FileStream f = new FileStream(path,FileMode.Open))
{
deserializedObject = (T)m_serialiezer.Deserialize(f,null,typeof(T));
}
#else
//Write Windows store specific code here
#endif
И это для экономии:
public static void SaveObjectToPath<T>(string objectPath, string filename, T serializedObject)
{
if (!Directory.Exists(objectPath))
{
Directory.CreateDirectory(objectPath);
}
if(!File.Exists(objectPath + filename))
{
File.Create(objectPath + filename);
}
#if !NETFX_CORE
using (FileStream f = new FileStream(objectPath + filename, FileMode.Truncate))
{
m_serialiezer.Serialize(f, serializedObject);
}
#else
#endif
}