星辰.Net技术社区论坛

首页 » .NET » Silverlight » 在Silverlight中使用IsolateStore隔离存储(下)
admin - 2008-6-19 13:59:00
上一篇中, 介绍了如何使用隔离存储(Isolate Store) ,当然因为篇幅所限, 只用了其中的:    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    IsolatedStorageSettingsѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    因为它所提供的功能很有限, 而隔离存储所提供的是一整套本地存储的方案,包括目录,文件管理等方面.ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
本文将会继续上文中的内容,通过一个本地文件系统管理的DEMO来演示一下如果使用下面两个隔离存储类:
    IsolatedStorageFile (返回一个包括路径和文件的虚拟区域, 用于管理目录,文件等)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    IsolatedStorageFileStream (以流的方式读写指定路径的文件)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    首先请大家看一下这个DEMO的演示效果:ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    我们可以在这里进行目录的选择,文件的选择,以及在相应的目录下添加,编辑,删除工作.而实现这些功能ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
都用到了上面所说的两个类.
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    比如IsolatedStorageFile就提供了如下几个常用的方法:ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    CreateDirectory() //创建路径 Creates a directory in the isolated storage scope. ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    CreateFile() //创建文件 Creates a file in the isolated store. ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    DeleteDirectory()//删除路径 Deletes a directory in the isolated storage scope. ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    DeleteFile() //删除文件
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    GetDirectoryNames //获取指定路径下的目录列表ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    GetFileNames //获取指定路径下的文件列表
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    以及相应的路径文件检查方法:ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    DirectoryExists() ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    FileExists()
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    而另外的一个类是IsolatedStorageFileStream, 它主要是对给定路径下的文件进行流读写操作,我们可以ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
使用如下方法将其绑定了一个读或写的流对象上:ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
IsolatedStorageFileStream subDraftFile = store.CreateFile(filePath);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
using (StreamWriter writer = new StreamWriter(subDraftFile))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
{ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
//ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
}ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    好的,下面是这个DEMO的page.xaml文件代码:ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
<Grid x:Name="LayoutRoot" Background="AntiqueWhite">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
<Grid.ColumnDefinitions>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<ColumnDefinition Width="0.307*"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<ColumnDefinition Width="0.176*"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<ColumnDefinition Width="0.517*"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
</Grid.ColumnDefinitions>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
<Grid.RowDefinitions>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<RowDefinition  Height="40"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<RowDefinition  Height="40"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<RowDefinition  Height="231"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<RowDefinition Height="*"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
</Grid.RowDefinitions>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
<StackPanel  Orientation="Vertical" Grid.Row="0"  Grid.Column="0"  Grid.RowSpan="4" Background="AliceBlue">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<TextBlock Grid.Row="0" Grid.Column="1"  HorizontalAlignment="Stretch" Margin="5,5,5,5">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<Run Text="路径:"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
</TextBlock>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<ListBox x:Name="DirectoryList" SelectionChanged="DirectoryList_SelectionChanged" Margin="5,5,5,5"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<TextBlock Grid.Row="0" Grid.Column="1"  HorizontalAlignment="Stretch" Margin="5,5,5,5">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<Run Text="文件列表:"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
</TextBlock>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<ListBox x:Name="FileList"  SelectionChanged ="FileList_SelectionChanged" Margin="5,5,5,5" Height="150"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
 
</StackPanel>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
  ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<TextBlock Grid.Row="0" Grid.Column="1"  HorizontalAlignment="Stretch" Margin="5,5,5,5">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<Run Text="收件人:"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
</TextBlock>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<TextBox x:Name="Recipient"  Width="200" Grid.Row="0" Grid.Column="2"  Margin="5,5,5,5" HorizontalAlignment="Left"  d:LayoutOverrides="GridBox"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<TextBlock Grid.Row="1" Grid.Column="1"  HorizontalAlignment="Stretch" Margin="5,5,5,5">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<Run Text="主 题:"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
</TextBlock>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<TextBox x:Name="Subject"  Width="200" Grid.Row="1" Grid.Column="2" Margin="5,5,5,5" HorizontalAlignment="Left"  d:LayoutOverrides="GridBox"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<TextBlock Grid.Row="2" Grid.Column="1" HorizontalAlignment="Stretch" Margin="5,5,5,5">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<Run Text="内 容:"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
</TextBlock>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<TextBox x:Name="Body" TextWrapping="Wrap"  Grid.Row="2" Grid.Column="2" Margin="5,5,5,5" HorizontalAlignment="Stretch"  Grid.RowSpan="1" d:LayoutOverrides="GridBox" RenderTransformOrigin="0.5,0.5">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
</TextBox>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
<StackPanel  Grid.Row="3"  Orientation="Horizontal" Grid.Column="1"  Grid.ColumnSpan="2" Margin="0,0,0,8">ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<Button x:Name="AddToDraft" Margin="5,5,5,5" Content=" 添加草稿 " Click="AddToDraft_Click"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<Button x:Name="SaveToDraft" Margin="5,5,5,5" Content=" 编辑草稿 " Click="SaveToDraft_Click"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
<Button x:Name="DeleteDraft" Margin="5,5,5,5" Content=" 删除当前草稿 " Click="DeleteDraft_Click"/>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
</StackPanel>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
</Grid>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    而相应的page.xaml.cs文件如下(相关内容见注释): 
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
public partial class Page : UserControlѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
{ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
public Page()ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        InitializeComponent();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
this.Loaded += new RoutedEventHandler(Page_Loaded);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
void Page_Loaded(object sender, RoutedEventArgs e)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
using (var store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
//如果本地没有文件夹,则初始化本地文件夹信息ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            if (!store.DirectoryExists("本地文件夹"))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
// 在当前根目录下创建三个目录ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                store.CreateDirectory("本地文件夹");ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
// 可使用下面方面在指定目录下创建子目录ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                store.CreateDirectory(System.IO.Path.Combine("本地文件夹", "收件箱"));ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                store.CreateDirectory(System.IO.Path.Combine(
"本地文件夹", "发件箱"));ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                store.CreateDirectory(System.IO.Path.Combine(
"本地文件夹", "草稿箱"));ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
//加载文件夹信息到控件ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            foreach (string directory in GetAllDirectories("*", store))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                DirectoryList.Items.Add(directory);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// 添加数据到草稿箱ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// </summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="sender"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="e"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    private void AddToDraft_Click(object sender, RoutedEventArgs e)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
using (var store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
string filePath = DirectoryList.SelectedItem.ToString();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
if (store.DirectoryExists(filePath))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                filePath
= System.IO.Path.Combine(filePath, Subject.Text + ".txt");ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
if (!store.FileExists(filePath))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    IsolatedStorageFileStream subDraftFile
= store.CreateFile(filePath);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                   
using (StreamWriter writer = new StreamWriter(subDraftFile))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                        writer.WriteLine(
"Recipient:" + Recipient.Text);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                        writer.WriteLine(
"Subject:" + Subject.Text);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                        writer.WriteLine(
"Body:" + Body.Text);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    subDraftFile.Close();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
elseѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    HtmlPage.Window.Alert(
"文件已存在,请修改主题后再进行保存");ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
      ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// 保存草稿箱的数据ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// </summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="sender"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="e"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    private void SaveToDraft_Click(object sender, RoutedEventArgs e)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
using (var store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
string filePath = DirectoryList.SelectedItem.ToString() + "/" + FileList.SelectedItem.ToString();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
if (store.FileExists(filePath))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                store.DeleteFile(filePath);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                IsolatedStorageFileStream subDraftFile
= store.CreateFile(filePath);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
using (StreamWriter writer = new StreamWriter(subDraftFile))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    writer.WriteLine(
"Recipient:" + Recipient.Text);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    writer.WriteLine(
"Subject:" + Subject.Text);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    writer.WriteLine(
"Body:" + Body.Text);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                subDraftFile.Close();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
elseѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                HtmlPage.Window.Alert(
"要修改的当前文件不在本地隔离存储!!!");ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
          ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// 删除指定草稿ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// </summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="sender"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="e"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    private void DeleteDraft_Click(object sender, RoutedEventArgs e)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
if (FileList.SelectedItem != null)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
using (var store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
string filePath = DirectoryList.SelectedItem.ToString() + "/" + FileList.SelectedItem.ToString();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
if (store.FileExists(filePath))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                   
if (HtmlPage.Window.Confirm("是否删除文件: " + filePath))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                        store.DeleteFile(filePath);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// 分割字符串ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// </summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    public static string[] SplitString(string strContent, string strSplit)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
if (strContent != null && strContent != "")ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
if (strContent.IndexOf(strSplit) < 0)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
string[] tmp = { strContent };ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
return tmp;ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
return Regex.Split(strContent, Regex.Escape(strSplit), RegexOptions.IgnoreCase);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
elseѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
return new string[0] { };ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// 下面代码从网上获得,用于递归指定路径下的所有目录ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// </summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="pattern"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="storeFile"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <returns></returns>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    public string[] GetAllDirectories(string pattern, System.IO.IsolatedStorage.IsolatedStorageFile storeFile)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
// Get the root of the search string.ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        string root = System.IO.Path.GetDirectoryName(pattern);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
if (root != "") root += "/";ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
// Retrieve directories.ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        string[] directories;ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        directories
= storeFile.GetDirectoryNames(pattern);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        List
<string> directoryList = new List<string>(directories);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
// Retrieve subdirectories of matches.ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        for (int i = 0, max = directories.Length; i < max; i++)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
string directory = directoryList+ "/";ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
string[] more = GetAllDirectories(root + directory + "*", storeFile);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
// For each subdirectory found, add in the base path.ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
for (int j = 0; j < more.Length; j++)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                more[j]
= directory + more[j];ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
// Insert the subdirectories into the list and ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
// update the counter and upper bound.ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            directoryList.InsertRange(i
+ 1, more);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            i
+= more.Length;ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            max
+= more.Length;ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
return (string[])directoryList.ToArray();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// 下面代码从网上获得,用于递归指定路径下的所有文件ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// </summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="pattern"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="storeFile"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <returns></returns>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    public string[] GetAllFiles(string pattern, System.IO.IsolatedStorage.IsolatedStorageFile storeFile)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
// Get the root and file portions of the search string.ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        string fileString = System.IO.Path.GetFileName(pattern);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
string[] files;ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        files
= storeFile.GetFileNames(pattern);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        List
<string> fileList = new List<string>(files);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
// Loop through the subdirectories, collect matches, ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
// and make separators consistent.ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
//foreach (string directory in GetAllDirectories("*", storeFile))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
//    foreach (string file in storeFile.GetFileNames(directory + "/" + fileString))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
//        fileList.Add((directory + "/" + file));ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
return (string[])fileList.ToArray();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// 当用户选择不同的路径时ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// </summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="sender"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="e"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    private void DirectoryList_SelectionChanged(object sender, SelectionChangedEventArgs e)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        FileList.Items.Clear();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
using (var store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
foreach (string file in GetAllFiles(DirectoryList.SelectedItem.ToString() + "/", store))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                FileList.Items.Add(file);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// 当用户选择相应的文件时ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// </summary>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="sender"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
   
/// <param name="e"></param>ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    private void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
       
if(FileList.SelectedItem != null)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
           
using (var store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
string filePath = System.IO.Path.Combine(DirectoryList.SelectedItem.ToString(), FileList.SelectedItem.ToString());ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
if (store.FileExists(filePath))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    IsolatedStorageFileStream subDraftFile
=ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                        store.OpenFile(filePath, FileMode.Open);ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                   
//加载指定文件中的内容ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    using (StreamReader reader = new StreamReader(subDraftFile))ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                       
string[] emailInfo = SplitString(reader.ReadToEnd(), "\r\n");ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                       
foreach (string emailItem in emailInfo)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                        {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                           
if (emailItem.IndexOf("Recipient") >= 0)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                                Recipient.Text
= emailItem.Split(':')[1]; continue;ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                           
if (emailItem.IndexOf("Subject") >= 0)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                                Subject.Text
= emailItem.Split(':')[1]; continue;ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                           
if (emailItem.IndexOf("Body") >= 0)ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                            {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                                Body.Text
= emailItem.Split(':')[1]; continue;ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                            }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    subDraftFile.Close();ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
               
elseѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                {ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                    HtmlPage.Window.Alert(
"文件: " + filePath + " 不存在!!!");ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
                }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
            }                ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
        }ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
    }    ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
}ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4
ѓ1*OowI-www.netcsharp.cn¯ƒ­ívª¶||4

附件: silverlight_isolatedstore_demo.rar
1
查看完整版本: 在Silverlight中使用IsolateStore隔离存储(下)