DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Tobi Ulm Artikel Drucken
        
Der IsolatedStorage Namespace

Wie oft ist es uns schon so gegangen? Wir wollen schnell Daten in das Anwendungsverzeichnis speichern und zwar so dass nur unsere Anwendung, oder nur ein bestimmter Benutzer auf die erzeugten Dateien zugreifen kann. Mit der IsolatedStorage Funktionalität habe wir eine sehr einfache Möglichkeit. Grundlage ist der System.IO.IsolatedStorage Namespace in dem sich die Klasse IsolatedStorageFile befindet. Diese Klasse hat Methoden um Verzeichnisse anzulegen, zu löschen, Dateien zu löschen.

using System.IO;
using System.IO.IsolatedStorage;

Interessant ist jedoch der Konstruktor der Klasse, da hier so genannte Scopes gesetzt werden können. Diese Scopes ermöglichen es die zu schreibenden Daten entweder für nur einen User, oder für das gesamte Programm(d.h. alle Benutzer die dieses Programm auf der Maschine ausführen können auf die Daten zugreifen) greifbar zu machen. Sie können bei den Scopes auch über Bitweise Operatoren eine Logische Verknüpfung machen.

IsolatedStorageFile isoStore =  IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly , null, null);

Hat man einmal den IsoStore, kann man dann sehr einfach mit einem normalen Stream Dateien erzeugen oder lesen

StreamWriter writer = null;
writer = new StreamWriter(new IsolatedStorageFileStream("test.txt", FileMode.CreateNew,isoStore));


Zu erwähnen ist lediglich dass der IsoStore nur für Managed Programme (also .NET Programme) gesichert ist. Unmanaged Programme (z.B. C++, VB6) können trotzdem auf diese geschützten Bereiche zugreifen.

Viel Spaß beim Ausprobieren!

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.IO.IsolatedStorage;
namespace IsolatedStorageDemo{
 public class Form1 : System.Windows.Forms.Form{
  #region "datamember"
  private System.Windows.Forms.Button button1;
  private System.Windows.Forms.Button button2;
  private System.Windows.Forms.RichTextBox richTextBox1;
  private System.Windows.Forms.Button button3;
  private System.ComponentModel.Container components = null;
  #endregion
  #region "ctor"
  public Form1(){
   InitializeComponent();

  }
  #endregion
  #region "dtor"
  protected override void Dispose( bool disposing ){
   if( disposing ){
    if (components != null) {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }
  #endregion
  #region Vom Windows Form-Designer generierter Code
  /// <summary>
  /// Erforderliche Methode für die Designerunterstützung.
  /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
  /// </summary>
  private void InitializeComponent()
  {
   this.button1 = new System.Windows.Forms.Button();
   this.button2 = new System.Windows.Forms.Button();
   this.richTextBox1 = new System.Windows.Forms.RichTextBox();
   this.button3 = new System.Windows.Forms.Button();
   this.SuspendLayout();
   //
   // button1
   //
   this.button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
   this.button1.Location = new System.Drawing.Point(16, 16);
   this.button1.Name = "button1";
   this.button1.Size = new System.Drawing.Size(312, 23);
   this.button1.TabIndex = 0;
   this.button1.Text = "Isolated Storage File laden";
   this.button1.Click += new System.EventHandler(this.button1_Click);
   //
   // button2
   //
   this.button2.FlatStyle = System.Windows.Forms.FlatStyle.System;
   this.button2.Location = new System.Drawing.Point(16, 48);
   this.button2.Name = "button2";
   this.button2.Size = new System.Drawing.Size(312, 23);
   this.button2.TabIndex = 1;
   this.button2.Text = "In Isolated Storage File schreiben";
   this.button2.Click += new System.EventHandler(this.button2_Click);
   //
   // richTextBox1
   //
   this.richTextBox1.Location = new System.Drawing.Point(16, 112);
   this.richTextBox1.Name = "richTextBox1";
   this.richTextBox1.Size = new System.Drawing.Size(312, 232);
   this.richTextBox1.TabIndex = 2;
   this.richTextBox1.Text = "";
   //
   // button3
   //
   this.button3.FlatStyle = System.Windows.Forms.FlatStyle.System;
   this.button3.Location = new System.Drawing.Point(16, 80);
   this.button3.Name = "button3";
   this.button3.Size = new System.Drawing.Size(312, 23);
   this.button3.TabIndex = 3;
   this.button3.Text = "Isolated Storage File löschen";
   this.button3.Click += new System.EventHandler(this.button3_Click);
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
   this.ClientSize = new System.Drawing.Size(352, 358);
   this.Controls.Add(this.button3);
   this.Controls.Add(this.richTextBox1);
   this.Controls.Add(this.button2);
   this.Controls.Add(this.button1);
   this.Name = "Form1";
   this.Text = "Isolated Storage Demo";
   this.ResumeLayout(false);

  }
  #endregion

  [STAThread]
  static void Main() {
   Application.EnableVisualStyles();
   Application.Run(new Form1());
  }

  private void button1_Click(object sender, System.EventArgs e) {
   if ( this.CheckForIsoFile(this.GetIsolatedStorage()) ){
    this.richTextBox1.Text = this.ReadFromIsoFile(this.GetIsolatedStorage());
   }
   else{
    MessageBox.Show("Konnte den Isolierten Speicherbereich nicht finden!");
   }
  }


  private IsolatedStorageFile GetIsolatedStorage(){
   IsolatedStorageFile isoStore =  IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly , null, null);
   
   return isoStore;
  }
  
  private bool CheckForIsoFile(IsolatedStorageFile isoStore){
   string[] fileNames = isoStore.GetFileNames("test.txt");
   bool blfilefound = false;
   foreach (string file in fileNames){
    if(file == "test.txt"){
     blfilefound = true;
    }
   }
   return blfilefound;
  }
  
  private void WriteToIsoFile(IsolatedStorageFile isoStore, string inputvalue){
   try{
    StreamWriter writer = null;

    if ( this.CheckForIsoFile( this.GetIsolatedStorage() ) ){
     writer = new StreamWriter( new IsolatedStorageFileStream("test.txt", FileMode.Append, FileAccess.Write, isoStore));
    }
    else{
     writer = new StreamWriter(new IsolatedStorageFileStream("test.txt", FileMode.CreateNew,isoStore));
    }
    writer.Write(inputvalue);
    writer.Close();

   }
   catch ( Exception eXP ){
    MessageBox.Show( eXP.Message );
   }
  }

  public string ReadFromIsoFile(IsolatedStorageFile isoStore){
   System.Text.StringBuilder strBldResult;
   
   bool blfilefound = false;
   blfilefound = this.CheckForIsoFile(isoStore);
   if ( blfilefound ){
    StreamReader reader = new StreamReader(new IsolatedStorageFileStream("test.txt", FileMode.Open,isoStore));
    strBldResult  = new System.Text.StringBuilder();
    strBldResult.Append( reader.ReadToEnd() );
    reader.Close();
    return strBldResult.ToString();
   }
   else{
    return string.Empty;
   }
  }

  private void button2_Click(object sender, System.EventArgs e) {
   this.WriteToIsoFile(this.GetIsolatedStorage(), this.richTextBox1.Text);
  }

  private void button3_Click(object sender, System.EventArgs e) {
   try{
    IsolatedStorageFile isoStore = this.GetIsolatedStorage();
    if ( this.CheckForIsoFile(isoStore ) ){
     isoStore.DeleteFile("test.txt");
    }
   }
   catch ( Exception eXP ){
    MessageBox.Show( eXP.Message );
   }
  }
 };
}


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 11.11.2004
  Gültig bis: 09.02.2005
3 Ratings
Bewertung: 80,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG