Я создал некоторый код для чтения и записи байтового массива (byte []) в изолированное хранилище и из него в моем приложении Xamarin Forms.(На данный момент просто UWP).Когда я пишу файл, массив байтов должен превышать 7000 байтов.Когда я читаю файл из изолированного хранилища, я получаю 22 байта, и мой файл (файл изображения), конечно, не будет отображаться правильно.
Ниже приведен мой код.Любые предложения будут с благодарностью.
private byte[] ReadFromIsolatedStorage(string ps_FileName = "")
{
byte[] lobj_ReturnValue = null;
try
{
if (ps_FileName.Trim().Length == 0)
{
ps_FileName = "KioskIcon";
}
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
if (isoStore.FileExists(ps_FileName))
{
using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(ps_FileName, FileMode.Open, isoStore))
{
lobj_ReturnValue = GetImageStreamAsBytes(isoStream);
}
}
}
catch (Exception ex)
{
App.ProcessException(ex);
}
return lobj_ReturnValue;
}
private byte[] GetImageStreamAsBytes(Stream input)
{
var buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
private void WriteToIsolatedStorage(byte[] pobj_ByteArray, string ps_FileName = "")
{
try
{
if (ps_FileName.Trim().Length == 0)
{
ps_FileName = "KioskIcon";
}
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
if (isoStore.FileExists(ps_FileName))
{
isoStore.DeleteFile(ps_FileName);
}
Stream stream = new MemoryStream(pobj_ByteArray);
using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(ps_FileName, FileMode.Create, isoStore))
{
using (StreamWriter writer = new StreamWriter(isoStream))
{
writer.Write(stream);
}
}
}
catch (Exception ex)
{
App.ProcessException(ex);
}
}