New Message on dotNET User Group Hyd

Article : What is Isolated Storage ? ( Part- 2 .Net FrameWork Tools Series )

Reply
  Reply to Sender   Recommend Message 1 in Discussion
From: Nasha

Hey Group,

To continue with our exploration on Isolated Storage Let us go ahead and create a sample application.

1) Open a new Win App Place one listbox, one textbox and one button on the form.

2) Our gaol is to serialize the contents of the listbox when the application shut downs and when the application runs it should load the serialized data back. IsolatedStorage works in a similar way as the file system . You can say it is a special type of file system which is specific to your application.Only your application knows where the files are stored.

3) Getting started we will create a .txt file for our application in IsolationStorage which will hold all the serilized data. We first need to get the reference of the IsolatedStorage Store for out application. We do that by calling a static function of IsolatedStorageFile object called GetStore.

4) Add code in the click event of the button to add the text entered in the textbox as an item in the listbox

listBox2.Items.Add(textBox1.Text);
textBox1.Text = "";

5) Since we have got reference to the store we can go ahead and create our textfile to store our data.We need to serialize all the items in the listbox. We will handle this in the Form Closing event.

6) Get the reference to the Application Store by calling GetStore method on IsolatedStorageFile class

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

If you check out all the other static methods of this object you will see that there are specific methonds to get Isolated Stores for User and Application Domain called as GetUserStoreFor Assembly and GetUserStoreForDomain. While calling this function remember to put a combination of two or more options for IsolatedStorageScope. This does not take a single value. Here we have given the scope as Assembly and User.

7) Our second step will be to create a text file to hold our data. So we create a file named "IsolatedStoreProj.txt" using the IsolatedStorageFileStream object.

IsolatedStorageFileStream isfs = new

IsolatedStorageFileStream("IsolatedStoreProj.txt",System.IO.FileMode.OpenOrCreate,System.IO.FileAccess.ReadWrite,System.IO.

FileShare.ReadWrite,isf);

8) Now just loop through the items in the listbox and serialize all the data in the text file. After wrting the data in the file stream close the file stream.You complete code should look something like this :-

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
IsolatedStorageFile isf = IsolatedStorageFile.GetStore(IsolatedStorageScope.Assembly | IsolatedStorageScope.User,null,null);
IsolatedStorageFileStream isfs = new IsolatedStorageFileStream ("IsolatedStoreProj.txt",System.IO.FileMode.OpenOrCreate,System.IO.FileAccess.ReadWrite,System.IO. FileShare.ReadWrite,isf);
string [] sItems = new string[10];
listBox1.Items.CopyTo(sItems,0);
string >for(int i=0;i<sItems.GetLength(0);i++)
{
if(sItems[i] != null)
oneString += sItems[i].ToString() + ",";

else

break;
}
- 1);
System.Text.ASCIIEncoding asc = new System.Text.ASCIIEncoding();
byte [] byteArray = asc.GetBytes(oneString);
isfs.Write(byteArray,0,byteArray.GetLength(0));
isfs.Close();
isf.Close();
}

9) Compile and run this code. On exiting the application a text named IsolatedStoreProj.txt should be created. This file will be created in at the follwoing location

<drive>:\Documents and Settings\<user>\Local Settings\Application Data\IsolatedStorage\<some folder>\<some folder>\AssemFiles\IsolatedStoreProj.txt

10) Open the file and you will be able to view the contents we had serialized.

11) Now let us load this data when our application starts up. We will read this file in the form_load event and populate our listbox.

private void Form1_Load(object sender, System.EventArgs e)
{
IsolatedStorageFile isf = IsolatedStorageFile.GetStore(IsolatedStorageScope.Assembly | IsolatedStorageScope.User,null,null);
IsolatedStorageFileStream isfs = new IsolatedStorageFileStream ("IsolatedStoreProj.txt",System.IO.FileMode.OpenOrCreate,System.IO.FileAccess.Read,System.IO.FileShare.Read,isf);
byte[] byteArray = new byte[10000];
isfs.Read(byteArray,0,(int)isfs.Length);
System.Text.ASCIIEncoding asc = new System.Text.ASCIIEncoding();
string twoString = asc.GetString(byteArray);
string[] char[]{','},10);
for(int i=0;i<oneArray.GetLength(0);i++)
listBox2.Items.Add(oneArray[i]);
isfs.Close();
isf.Close();
}

12) In this way we can store our user setting , application related data in the Isolated store.

13) This store that we have created in our sample application is a non-roaming store. To create a roaming store give the scope as IsolatedStorageScope.Roaming along with assembly and user as specified above.

14) WinNT and Operationg systems after it have a feature called as roaming user profiles which allows the user to carry his perferences and presonal settings across machines on the network.On the same lines .Net provides us with roaming assembly stores so if the user has a roaming Windows profile his roaming assembly store will also roam.

15) The assembly store is roaming only if it is mentioned explictly by mentioning the IsolatedStorageScope if it is not then the scope is non-roaming by default. Even if the user profile is roaming the isolated store can be non-roaming.

16) You can create and list stores through code as well as use storeadm.exe for the same ( as per Part -1).

 

-- Please post your queries and comments for my articles in the usergroup for the benefit of all. I hope this step from my end is helpful to all of us.

Regards,

Namratha (Nasha)

 

 

 


View other groups in this category.

Click Here!
Also on MSN:
Start Chatting | Listen to Music | House & Home | Try Online Dating | Daily Horoscopes

To stop getting this e-mail, or change how often it arrives, go to your E-mail Settings.

Need help? If you've forgotten your password, please go to Passport Member Services.
For other questions or feedback, go to our Contact Us page.

If you do not want to receive future e-mail from this MSN group, or if you received this message by mistake, please click the "Remove" link below. On the pre-addressed e-mail message that opens, simply click "Send". Your e-mail address will be deleted from this group's mailing list.
Remove my e-mail address from dotNET User Group Hyd.

Reply via email to