File Handling in Isolated Storage in Silver Light

Objective

This article will explain,

  1. How to create a text file in IsolatedStorageFile of a SilverLight 2 application.
  2. How to write into a text file in IsoltaedStorageFile.
  3. How to read a text file from IsolatedStorageFile.
  4. How to delete a file from IsolatedStorageFile.

Step 1

Create a SilverLight application. By selecting File->New->Project->SilverLight-> SilverLight Application.Design the XAML page. I am creating three buttons for the purpose of Read, Write and Delete File. There are two text boxes. One to get filename input and other for displaying content from the file and saving content from that text box.

MainPage.Xaml

<UserControl
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml

xmlns:d=”http://schemas.microsoft.com/expression/blend/2008&#8243; ns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006&#8243; x:Class=”FileReadingandWritingwithIsolatedStorage.MainPage”
Width=”Auto” Height=”Auto” mc:Ignorable=”d”><Grid x:Name=”LayoutRoot” Height=”400″ Width=”600″>

   <Grid.Background>

 <LinearGradientBrush EndPoint=”0.5,1″ StartPoint=”0.5,0″>
 <GradientStop Color=”#FF000000″/>
<GradientStop Color=”#FFE9DDDD” Offset=”1″/>
</LinearGradientBrush>
</Grid.Background><Grid.RowDefinitions>
<RowDefinition Height=”0.175*”/> <RowDefinition Height=”0.182*”/>  <RowDefinition Height=”0.642*”/>
 </Grid.RowDefinitions>
<TextBox x:Name=”txtFileLabel” HorizontalAlignment=”Left” Margin=”17,18,0,17″ Width=”188″ FontSize=”18″ FontWeight=”Normal” Text=”File Name” TextWrapping=”Wrap” Opacity=”0.3″ Background=”#FF808080″/>
 <TextBox x:Name=”txtFileName” Margin=”252,18,48,17″ Width=”300″ FontSize=”18″ FontWeight=”Bold” Text=”” TextWrapping=”Wrap”/>
<Button x:Name=”btnRead” HorizontalAlignment=”Left” Margin=”17,23,0,8″ Width=”180″ FontSize=”18″ FontWeight=”Bold” Grid.Row=”1″ Content=”Read” Click=”btnRead_Click”/>
<Button x:Name=”btnWrite” Margin=”0,23,36,8″ Width=”180″ FontSize=”18″ FontWeight=”Bold” Grid.Row=”1″ Content=”Write” Click=”btnWrite_Click” d:LayoutOverrides=”Width” HorizontalAlignment=”Right”/>
 <TextBox x:Name=”txtContent” Margin=”30,22,45,34″ Grid.Row=”2″ Text=”” TextWrapping=”Wrap” FontSize=”9″/>
<Button x:Name=”btnDelete” Margin=”235,23,251,8″ Grid.Row=”1″ Content=”Delete File” FontWeight=”Bold” FontSize=”18″ Click=”btnDelete_Click”/>
</Grid>
</UserControl>

 Step 2
Now, writing the code behind to handle the Read and Write Operation. I am using IsolatedStorageFIle class to perform file handling operations.
IsolatedStorageFile

  1. This class is inside the namespace System.IO.IsolatedStorage
  2. We could set domain of IsolatedStorageFile either for SilverLight website or for SilverLight Application.
  3. There are many methods exist inside this to work with File operations. For example, create directory, create file, delete directory, delete file etc. 

How to write into the file?

private void btnWrite_Click(object sender, System.Windows.RoutedEventArgs e){using (var store = IsolatedStorageFile.GetUserStoreForApplication(){
if (!(store.FileExists(txtFileName.Text))){
MessageBox.Show(“File does not exist , we are creating one for you “);
IsolatedStorageFileStream file = store.CreateFile(txtFileName.Text);
file.Close();}
using (StreamWriter sw = new StreamWriter(store.OpenFile(txtFileName.Text, FileMode.Open, FileAccess.Write)))
{
sw.WriteLine(txtContent.Text);
}
txtContent.Text = “”;

txtFileName.Text = “”;
MessageBox.Show(“File Writen”);}}

 Explanation

  1. StreamWriter is being used to write into the file.
  2. StreamWriter is inside the namespace System.IO.
  3. We are opening the ISolatedStorageFile for the SilverLight Application.
  4. We are checking, that if file name provided by user does not exist then create a new one with the provided name.
  5. We are opening the file in Write Mode and writing the stream into that.

     How to Read from the file?

private void btnRead_Click(object sender, System.Windows.RoutedEventArgs e){using (var store = IsolatedStorageFile.GetUserStoreForApplication(){
if (!(store.FileExists(txtFileName.Text))){
MessageBox.Show(“File does not exist “);
txtFileName.Text = “”;
}
else{
using (StreamReader sr = new StreamReader(store.OpenFile(txtFileName.Text, FileMode.Open, FileAccess.ReadWrite))) {
txtContent.Text = sr.ReadToEnd();
}}}}

Explanation

  1. StreamReader is being used to read from the file.
  2. StreamREader is inside the namespace System.IO.
  3. We are opening the ISolatedStorageFile for the SilverLight Application.
  4. We are checking, that if file name provided by user does not exist then displaying the message that file name does not exist.
  5. We are opening the file in Read Mode and reading the stream into a string.

 How to delete file?

private void btnDelete_Click(object sender, System.Windows.RoutedEventArgs e){
using (var store = IsolatedStorageFile.GetUserStoreForApplication()){
if (!(store.FileExists(txtFileName.Text))){
MessageBox.Show(“File does not exist “);
}
else{ store.DeleteFile(txtFileName.Text);
MessageBox.Show(“Deleted”);}
txtFileName.Text = “”;}}

 Explanation

  1. We are calling the DeleteFile method on instance of ISolatedStorageFile.

Complete code is as below

MainPage.xaml.cs

 

using System;using System.Collections.Generic;

using System.Linq;

using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;
using System.IO.IsolatedStorage;
namespace FileReadingandWritingwithIsolatedStorage
{
public partial class MainPage : UserControl{
public MainPage(){

InitializeComponent();
}
private void btnRead_Click(object sender, System.Windows.RoutedEventArgs e)
{
 

using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!(store.FileExists(txtFileName.Text))){
MessageBox.Show(“File does not exist “);
txtFileName.Text = “”;
}
else
{
using (StreamReader sr = new StreamReader(store.OpenFile(txtFileName.Text, FileMode.Open, FileAccess.ReadWrite)))
{
txtContent.Text = sr.ReadToEnd();
}}}}

private void btnWrite_Click(object sender, System.Windows.RoutedEventArgs e)
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!(store.FileExists(txtFileName.Text))){
MessageBox.Show(“File does not exist , we are creating one for you “);
IsolatedStorageFileStream file = store.CreateFile(txtFileName.Text);
file.Close();
}
using (StreamWriter sw = new StreamWriter(store.OpenFile(txtFileName.Text, FileMode.Open, FileAccess.Write)))
{
sw.WriteLine(txtContent.Text);
}
txtContent.Text = “”;

txtFileName.Text = “”;
MessageBox.Show(“File Writen”);
}}
private void btnDelete_Click(object sender, System.Windows.RoutedEventArgs e)
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!(store.FileExists(txtFileName.Text))){
MessageBox.Show(“File does not exist “);
}
else
{
store.DeleteFile(txtFileName.Text);
MessageBox.Show(“Deleted”);
}
txtFileName.Text = “”;
}}}}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create a website or blog at WordPress.com