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ª¶||4public 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