Angella Andrea - Italian Blog

Infinita passione per lo sviluppo software !
posts - 133, comments - 216, trackbacks - 9

My Links

News

MIT OpenCourseWare: I'm invested Wikipedia Affiliate Button


Sto leggendo:

Archives

Post Categories

Siti web realizzati

Siti web tecnici

[70-536] GZipStream class, DeflateStream class and Isolated Storage

Area di riferimento

- Implementing serialization and input/output functionality in a .NET Framework application (18 percent)
   - Compress or decompress stream information in a .NET Framework application and improve the security of application data by using isolated storage
      - May include but is not limited to: IsolatedStorageFile class, IsolatedStorageFileStream class;
      - DeflateStream class; GZipStream class


GZipStream and DeflateStream classes

La classi GZipStream e DeflateStream permettono di comprimere dati utilizzando il famoso algoritmo di compressione Gzip. Conviene utilizzare la classe GZipStream nel caso in cui si intenda distribuire i file in modo che questi possano essere decompressi utilizzando l'ampiamente diffuso tool gzip.

Queste classi si trovano nel namespace System.IO.Compression e il loro utilizzo è molto semplice.

class Program { static void Main(string[] args) { File.WriteAllText("source.txt", "Il contenuto di questo file verra' compresso."); // File compression using (FileStream sourceFile = File.Open("source.txt", FileMode.Open)) { using (FileStream destinationFile = File.Open("destination.dat", FileMode.Create)) { using (GZipStream comp = new GZipStream(destinationFile, CompressionMode.Compress)) { int b; while ((b = sourceFile.ReadByte()) != -1) { comp.WriteByte((byte)b); } } } } // File decompression using (FileStream sourceFile = File.Open("destination.dat", FileMode.Open)) { using (FileStream destinationFile = File.Open("new-source.txt", FileMode.Create)) { using (GZipStream decomp = new GZipStream(sourceFile, CompressionMode.Decompress)) { int b; while ((b = decomp.ReadByte()) != -1) { destinationFile.WriteByte((byte)b); } } } } Console.WriteLine(File.ReadAllText("new-source.txt")); Console.ReadKey(); } }

Isolated Storage

L'Isolated Storage è un repository all'interno del quale è possibile leggere e scrivere dati in maniera sicura indipendentemente dai privilegi di cui disponde il codice.

La prima cosa da fare quando si lavora con l'isolated storage è scegliere l'ambito in cui saranno memorizzati i dati:

  • Assembly/Machine : Si utilizza questo ambito per persistere dati a livello di applicazione.
  • Assembly/User : Si utilizza questo ambito per persistere dati a livello di utente. Ogni utente della macchina avrà le sue impostazioni specifiche.
  • ...

L'utilizzo dell'Isolated Storage ruota intorno alle classi IsolatedStorageFile e IsolatedStorageFileStream. E' inoltre possibile utilizzare l'attributo IsolatedStorageFilePermission per specificare il permesso di accedere all'Isolated Storage e impostare altri parametri come ad esempio la quota massima di spazio da associare a ciascun utente.

 

[IsolatedStorageFilePermission(SecurityAction.Demand, UserQuota=256)] class Program { static void Main(string[] args) { // Assembly/Machine Scope - Writing data IsolatedStorageFile applicationStorage = IsolatedStorageFile.GetMachineStoreForAssembly(); IsolatedStorageFileStream applicationStream = new IsolatedStorageFileStream("application-settings.dat", FileMode.Create, applicationStorage); using (StreamWriter writer = new StreamWriter(applicationStream)) { writer.Write("Informazioni a livello applicazione"); } // User/Machine Scope - Writing data IsolatedStorageFile userStorage = IsolatedStorageFile.GetUserStoreForAssembly(); IsolatedStorageFileStream userStream = new IsolatedStorageFileStream("user-settings.dat", FileMode.Create, userStorage); using (StreamWriter writer = new StreamWriter(userStream)) { writer.Write("Informazioni a livello utente in user-settings.dat"); } userStorage.CreateDirectory("folder"); userStream = new IsolatedStorageFileStream(@"folder\user-settings.dat", FileMode.Create, userStorage); using (StreamWriter writer = new StreamWriter(userStream)) { writer.Write("Informazioni a livello utente in folder\\user-settings.dat"); } // Reading data Console.WriteLine("Directories :"); foreach (string directory in userStorage.GetDirectoryNames("*")) { Console.WriteLine(directory); } Console.WriteLine("Files *.dat :"); foreach (string file in userStorage.GetFileNames("*.dat")) { Console.WriteLine(file); } Console.ReadKey(); } }

Print | posted on martedì 18 novembre 2008 16:07 | Filed Under [ Exam 70-536 Application Development Foundation ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET