windows phone开发——文件操作
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>
首先,创建文件夹,在进行文件操作之前不要忘记了添加命名空间
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 = "";
}
向文件中写入内容
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 = "";
}
读取文件内容
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();
}
}
删除文件
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 = "";
}