Voglio scrivere un file dove un'applicazione esterna può leggerlo, ma voglio anche alcuni dei vantaggi di IsolatedStorage, fondamentalmente un'assicurazione contro le eccezioni impreviste. Posso averlo?È possibile ottenere un percorso per un file IsolatedStorage e leggerlo da applicazioni esterne?
risposta
È possibile recuperare il percorso di un file di archiviazione isolato su disco accedendo a un campo privato della classe IsolatedStorageFileStream
utilizzando la riflessione. Ecco un esempio:
// 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();
Non sono sicuro che sia una pratica consigliata.
Ricordare che la posizione su disco dipende dalla versione del sistema operativo e che è necessario assicurarsi che l'altra applicazione disponga delle autorizzazioni per accedere a tale posizione.
Invece di creare un file temporaneo e ottenere la posizione è possibile ottenere il percorso dal negozio direttamente:
var path = store.GetType().GetField("m_RootDir", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(store).ToString();
Io uso Nome proprietà di 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;
}
Questo codice è stato testato in Windows Phone 8 SDK.
In "Desktop" .Net 4.5 il nome è "Sconosciuto" – habakuk
- 1. E 'possibile modificare un record in rotaie, senza prima leggerlo
- 2. Ottenere un flusso da un percorso assoluto?
- 3. salvare Btrees in un file su disco e leggerlo
- 4. È possibile ottenere il percorso di un cookie memorizzato?
- 5. Rinomina file in IsolatedStorage
- 6. Scrivere un long da Java in un file e leggerlo in C++
- 7. C'è un modo per leggerlo pigramente?
- 8. Due applicazioni Silverlight possono condividere IsolatedStorage su una macchina?
- 9. E 'possibile creare un VectorDrawable da File System (* .xml File)
- 10. È possibile ottenere un IntPtr da un array int []?
- 11. Come ottenere una posizione URL da un percorso server per un file di proprietà
- 12. Ottieni il nome file e l'estensione da un percorso assoluto
- 13. Ottenere il percorso assoluto di un file
- 14. È possibile ottenere un "URL di base" in Wordpress all'interno di un file modello?
- 15. È possibile avere un server JMS senza un server applicazioni?
- 16. ASP.NET MVC Ottenere file da percorso virtuale
- 17. È possibile ottenere un identificativo univoco per un oggetto MATLAB?
- 18. Come ottenere il percorso completo per un file in VBScript?
- 19. È possibile ottenere l'output di un processo
- 20. È possibile ottenere la finestra GTK principale da un widget?
- 21. È possibile ottenere un valore di ritorno da multiprocessing.Process?
- 22. E 'possibile ottenere un numero di versione dal file XAP
- 23. urllib.request: un modo per leggerlo senza modificare l'oggetto richiesta?
- 24. È possibile prelevare da un repository e inviarlo all'altro?
- 25. E 'possibile ottenere un int da Range.Value in VSTO?
- 26. Come ottenere un flusso FILE * da un descrittore di file?
- 27. è possibile ottenere un numero identificativo univoco da un dispositivo mobile?
- 28. Come è possibile disattivare ExtDeprecationWarning per librerie esterne nel pallone
- 29. Un file batch per minimizzare altre applicazioni
- 30. Come verificare se un dato percorso è possibile figlio di un altro percorso?
Almeno in Silverlight 4, ogni tentativo di fare questo i risultati di riflessione in ... Una prima eccezione di possibilità di tipo 'System.FieldAccessException' in mscorlib.dll Ulteriori informazioni: Tentativo con il metodo 'Comms.MainPage.LayoutRoot_Loaded (System.Object, System.Windows.RoutedEventArgs) 'per accedere al campo' System.IO.IsolatedStorage.IsolatedStorageFile.m_StorePath 'non riuscito. Inoltre, ora è "m_StorePath" e non "m_FullPath" - ancora più motivo per non usarlo. – DJA
@DJA Questo perché non puoi ottenere membri privati con la riflessione in Silveright a causa di problemi di sicurezza. – ghord