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