c# .net isolatedstorage

c# - ¿Puedo obtener una ruta para un archivo IsolatedStorage y leerlo desde aplicaciones externas?



.net (3)

En lugar de crear un archivo temporal y obtener la ubicación, puede obtener la ruta de la tienda directamente:

var path = store.GetType().GetField("m_RootDir", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(store).ToString();

Quiero escribir un archivo donde una aplicación externa pueda leerlo, pero también quiero algunas de las ventajas de IsolatedStorage, básicamente seguro contra excepciones inesperadas. ¿Puedo tenerlo?


Yo uso la propiedad Nombre de FileStream.

private static string GetAbsolutePath(string filename) { IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); string absoulutePath = null; if (isoStore.FileExists(filename)) { IsolatedStorageFileStream output = new IsolatedStorageFileStream(filename, FileMode.Open, isoStore); absoulutePath = output.Name; output.Close(); output = null; } return absoulutePath; }

Este código se prueba en Windows Phone 8 SDK.


Puede recuperar la ruta de un archivo de almacenamiento aislado en el disco accediendo a un campo privado de la clase IsolatedStorageFileStream , utilizando la reflexión. Aquí hay un ejemplo:

// Create a file in isolated storage. IsolatedStorageFile store = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null); IsolatedStorageFileStream stream = new IsolatedStorageFileStream("test.txt", FileMode.Create, store); StreamWriter writer = new StreamWriter(stream); writer.WriteLine("Hello"); writer.Close(); stream.Close(); // Retrieve the actual path of the file using reflection. string path = stream.GetType().GetField("m_FullPath", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(stream).ToString();

Aunque no estoy seguro de que sea una práctica recomendada.

Tenga en cuenta que la ubicación en el disco depende de la versión del sistema operativo y que necesitará asegurarse de que su otra aplicación tenga los permisos para acceder a esa ubicación.