windows phone为应用提供了独立存储的方式,使得一个App所存储的文件内容不被其他应用所访问,以保证其安全性。在wp7的时代,提供了IsolatedStorageFile 类用于在应用的本地文件夹中将数据保存到文件。使用文件时,您也通常会使用 IsolatedStorageFileStream 类读取和写入文件的内容。当然,在现在的wp8,wp8.1也是支持此类操作的,并且全新的wp8提供了新的类来进行文件和文件夹的操作:StorageFolder 类用于向本地文件夹内的某个文件读取和写入数据。使用文件时,您也通常会使用 StreamReader 类读取和写入文件的内容。
下面将分别介绍以上两种方式如何来实现的文件的存取的:
首先将一个页面进行如下布局
<TextBlock Text="文件目录" Margin="20,0,0,0"/> <TextBox x:Name="textbox1" Grid.Row="1" Margin="20,0,0,0"/> <TextBlock Text="文件名称" Grid.Row="2" Margin="20,0,0,0"/> <TextBox x:Name="textbox2" Grid.Row="3" Margin="20,0,0,0"/> <TextBlock Text="文件内容" Grid.Row="4" Margin="20,0,0,0"/> <TextBox x:Name="textbox3" Grid.Row="5" Margin="20,0,0,0"/> <StackPanel Orientation="Horizontal" Grid.Row="6" VerticalAlignment="Center" HorizontalAlignment="Center"> <Button x:Name="button1" Content="创建" Click="button1_Click" /> <Button x:Name="button2" Content="写入" Click="button2_Click"/> <Button x:Name="button3" Content="读取" Click="button3_Click"/> <Button x:Name="button4" Content="删除" Click="button4_Click"/> </StackPanel>
首先,创建文件夹,在进行文件操作之前不要忘记了添加命名空间
使用IsolatedStorageFile 类
private void button1_Click(object sender, RoutedEventArgs e) { IsolatedStorageFileStream filestream; string path = ""; string name = ""; if(textbox1.Text.Trim()!=""&&textbox2.Text.Trim()!="") { path = textbox1.Text.Trim(); name = textbox2.Text.Trim(); } if (!storageFile.DirectoryExists(path)) storageFile.CreateDirectory(path); if (!storageFile.FileExists(System.IO.Path.Combine(path, name))) filestream = storageFile.CreateFile(System.IO.Path.Combine(path, name)); else filestream = storageFile.OpenFile(System.IO.Path.Combine(path, name),FileMode.Append); var writer = new StreamWriter(filestream); writer.Write(textbox3.Text); writer.Close(); filestream.Close(); textbox3.Text = ""; textbox1.Text = ""; textbox2.Text = ""; }
使用StorageFolder 类
private async void button1_Click(object sender, RoutedEventArgs e) { StorageFolder localFolder = ApplicationData.Current.LocalFolder; string path = ""; string name = ""; byte []content=System.Text.Encoding.UTF8.GetBytes(this.textbox3.Text.ToCharArray());; if (textbox1.Text.Trim() != "" && textbox2.Text.Trim() != "") { path = textbox1.Text.Trim(); name = textbox2.Text.Trim(); } var dataFolder = await localFolder.CreateFolderAsync(path, CreationCollisionOption.OpenIfExists); var dataFile = await dataFolder.CreateFileAsync(name, CreationCollisionOption.OpenIfExists); if (textbox3.Text.Trim() != "") { using (var s = await dataFile.OpenStreamForWriteAsync()) { s.Write(content,0,content.Length); } } textbox1.Text = ""; textbox2.Text = ""; textbox3.Text = ""; }
向文件中写入内容
使用IsolatedStorageFile 类
private void button2_Click(object sender, RoutedEventArgs e) { IsolatedStorageFileStream filestream; string path = ""; string name = ""; if(textbox1.Text.Trim()!=""&&textbox2.Text.Trim()!="") { path = textbox1.Text.Trim(); name = textbox2.Text.Trim(); } if (storageFile.FileExists(System.IO.Path.Combine(path, name))) { filestream =storageFile.OpenFile(System.IO.Path.Combine(path,name),FileMode.Append); var write = new StreamWriter(filestream); write.Write(textbox3.Text); write.Close(); filestream.Close(); textbox3.Text = ""; } }
使用StorageFolder 类
private async void button2_Click(object sender, RoutedEventArgs e) { StorageFolder localFolder = ApplicationData.Current.LocalFolder; string path = ""; string name = ""; byte[] content = System.Text.Encoding.UTF8.GetBytes(this.textbox3.Text.ToCharArray()); if (textbox1.Text.Trim() != "" && textbox2.Text.Trim() != "") { path = textbox1.Text.Trim(); name = textbox2.Text.Trim(); } var dataFolder = await localFolder.GetFolderAsync(path); var dataFile = await dataFolder.GetFileAsync(name); using (var s = await dataFile.OpenStreamForWriteAsync()) { s.Write(content, 0, content.Length); } textbox3.Text = ""; }
读取文件内容
使用IsolatedStorageFile 类
private void button3_Click(object sender, RoutedEventArgs e) { IsolatedStorageFileStream filestream; string path = ""; string name = ""; if(textbox1.Text.Trim()!=""&&textbox2.Text.Trim()!="") { path = textbox1.Text.Trim(); name = textbox2.Text.Trim(); } if(storageFile.FileExists(System.IO.Path.Combine(path,name))) { filestream = storageFile.OpenFile(System.IO.Path.Combine(path, name), FileMode.Open); var read = new StreamReader(filestream); textbox3.Text = read.ReadToEnd(); read.Close(); filestream.Close(); } }
使用StorageFolder 类
private async void button3_Click(object sender, RoutedEventArgs e) { StorageFolder localFolder=ApplicationData.Current.LocalFolder; string path = ""; string name = ""; if (textbox1.Text.Trim() != "" && textbox2.Text.Trim() != "") { path = textbox1.Text.Trim(); name = textbox2.Text.Trim(); } var dataFolder=await localFolder.GetFolderAsync(path); var dataFile = await dataFolder.OpenStreamForReadAsync(name); using (var s=new StreamReader(dataFile)) { this.textbox3.Text=s.ReadToEnd(); } }
删除文件
使用IsolatedStorageFile 类
private void button4_Click(object sender, RoutedEventArgs e) { // IsolatedStorageFileStream filestream; string name = ""; string path = ""; if(textbox1.Text.Trim()!=""&&textbox2.Text.Trim()!="") { path = textbox1.Text.Trim(); name = textbox2.Text.Trim(); } if(storageFile.FileExists(System.IO.Path.Combine(path,name))) { storageFile.DeleteFile(System.IO.Path.Combine(path, name)); } textbox3.Text = ""; textbox2.Text = ""; }
使用StorageFolder 类
private async void button4_Click(object sender, RoutedEventArgs e) { StorageFolder localFolder = ApplicationData.Current.LocalFolder; string name = ""; string path = ""; if (textbox1.Text.Trim() != "" && textbox2.Text.Trim() != "") { path = textbox1.Text.Trim(); name = textbox2.Text.Trim(); } var dataFolder = await localFolder.GetFolderAsync(path); var dataFile = await dataFolder.GetFileAsync(name); await dataFile.DeleteAsync(); await dataFolder.DeleteAsync(); textbox3.Text = ""; textbox2.Text = ""; }