111Q0K31-0  
IsolatedStorage是Silverlight一個特色,它是Silverlight的虛擬檔案系統,所謂的虛擬檔案系統,微軟官方文檔解釋為虛擬檔案系統的根位於物理檔案系統上經過模糊處理的每使用者資料夾中,由主機提供的每個唯一識別碼都映射為不同的根,該根為每個應用程式提供它自己的虛擬檔案系統。應用程式不能從它自己的檔案系統導航到另一個檔案系統中。也就是說除了一些高度受信任的託管代碼和管理工具可以從其他程式集訪問還有非託管代碼可以訪問外,此空間就只能本程式訪問,由此它的安全性很高。Windows Phone 7是基於Silverlight,它的檔案系統也是IsolatedStorage,它的預設大小為2GB,因為他的安全性,他不適合保存大的資料和重要資料,適合保存臨時資料。
IsolatedStorage命名空間是 System.IO.IsolatedStorage,它包含在 mscorlib程式集中,在命名空間下有四個類,它們分別是:IsolatedStorageFile、IsolatedStorageFileStream、IsolatedStorageException、IsolatedStorageSettings,其中IsolatedStorageFile、IsolatedStorageFileStream為常用,下面有一個簡單示例運用這兩個類。
我們在IsolatedStorage中寫入檔和和讀取檔簡單操作,首先新建一個專案,在MainPage.xaml寫Xaml Code:
<phone:PhoneApplicationPage
x:Class="Demo.MainPage"
xmlns="HTTP://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="HTTP://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="HTTP://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="HTTP://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="696"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
shell:SystemTray.IsVisible="True">

 

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

 

<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

 

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Content="寫入檔" Height="72" HorizontalAlignment="Left" Margin="9,148,0,0" Name="button2" VerticalAlignment="Top" Width="160" Click="button2_Click" />
<Button Content="讀取檔" Height="72" HorizontalAlignment="Left" Margin="205,148,0,0" Name="button3" VerticalAlignment="Top" Width="160" Click="button3_Click" />
<TextBox Height="72" HorizontalAlignment="Left" Margin="-4,48,0,0" Name="textBox1" Text="" VerticalAlignment="Top" Width="460" />
<TextBlock Height="30" HorizontalAlignment="Left" Margin="6,226,0,0" Name="textBlock1" Text="" VerticalAlignment="Top" />
</Grid>
</Grid>

 

<!--Sample code showing usage of ApplicationBar-->
<!--<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="MenuItem 1"/>
<shell:ApplicationBarMenuItem Text="MenuItem 2"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>-->

 

</phone:PhoneApplicationPage>




下來在MainPage類定義獨立存儲物件,它對應著特定的獨立存儲範圍,在建構函式中初始化。

 

IsolatedStorageFile isf;
public MainPage()
{
InitializeComponent();
//獲取應用程式的空間,初始化
isf = IsolatedStorageFile.GetUserStoreForApplication();
}
最後使用 IsolatedStorageFileStream 類,為寫入檔和讀取檔按鈕添加事件。
C# code:
private void button2_Click(object sender, RoutedEventArgs e)
{
//寫入檔操作
IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream("text.txt",FileMode.Create,FileAccess.Write,isf);
StreamWriter writer = new StreamWriter(fileStream);
if (this.textBox1.Text != "")
{
writer.WriteLine(this.textBox1.Text);
writer.Close();
}
else
{
MessageBox.Show("寫入檔不能為空!");
}
}

 

private void button3_Click(object sender, RoutedEventArgs e)
{
//讀取檔操作
IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream("text.txt", FileMode.Open, FileAccess.Read,isf);
StreamReader reader = new StreamReader(fileStream);
this.textBlock1.Text = reader.ReadToEnd();
reader.Close();
}
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()