Quickstart: Working with files and folders in Windows Phone 8
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
The StorageFolder class is used for reading and writing data to a file within the local folder. When you work with files, you also typically use the StreamReader class to read and write content to the file.
This topic contains the following sections.
- Files and folders API overview
- Files and folders example UI
- Files and folders directives
- Creating a folder and writing to a text file
- Reading a text file
- Related Topics
Files and folders API overview
The following methods are typically used when working with StorageFolder:
Creates a directory in the local folder. |
|
Asynchronous method creates a file in the local folder. |
|
Retrieves a stream for reading a file in the specified folder. |
|
Retrieves a stream for writing a file in the specified folder. |
|
Deletes a folder. |
|
Renames a folder. |
Files and folders example UI
The following image shows a sample app that demonstrates reading and writing text data to the local folder.
To create this UI, in the MainPage.xaml file, replace the Grid named ContentPanel with the following XAML.
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
<TextBox
Name="textBox1"
HorizontalAlignment="Left"
Height="72"
Margin="0,22,0,0"
TextWrapping="Wrap"
Text="Enter text here."
VerticalAlignment="Top" Width="456"/>
<Button
Name='btnWrite'
Content="Write"
HorizontalAlignment="Left"
Margin="10,94,0,0"
VerticalAlignment="Top"
Width="156"
Click="btnWrite_Click"/>
<TextBlock
Name="textBlock1"
HorizontalAlignment="Left"
Margin="10,293,0,0"
TextWrapping="Wrap" Text=""
VerticalAlignment="Top"
Height="61"
Width="436"/>
<Button
Name="btnRead"
Content="Read"
HorizontalAlignment="Left"
Margin="10,374,0,0"
VerticalAlignment="Top"
Width="156"
IsEnabled="False"
Click="btnRead_Click"/>
</Grid>
Files and folders directives
To work with files and folders using the code in this quickstart, add the following directives to projects created from the Windows Phone App template. Place these using statements at the top of the MainPage.xaml.cs file.
using System.IO;
using System.Threading.Tasks;
using Windows.Storage;
Creating a folder and writing to a text file
The following code shows how to create a folder and write to a text file. A file named DataFile.txt and folder named DataFolder are created if either of them don’t already exist. The file and folder are created with the CreateFileAsync and CreateFolderAsync methods. The CreationCollisionOption enumeration is used to specify what to do if the file or folder already exist.
private async void btnWrite_Click(object sender, RoutedEventArgs e)
{
await WriteToFile();
// Update UI.
this.btnWrite.IsEnabled = false;
this.btnRead.IsEnabled = true;
}
private async Task WriteToFile()
{
// Get the text data from the textbox.
byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(this.textBox1.Text.ToCharArray());
// Get the local folder.
StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
// Create a new folder name DataFolder.
var dataFolder = await local.CreateFolderAsync("DataFolder",
CreationCollisionOption.OpenIfExists);
// Create a new file named DataFile.txt.
var file = await dataFolder.CreateFileAsync("DataFile.txt",
CreationCollisionOption.ReplaceExisting);
// Write the data from the textbox.
using (var s = await file.OpenStreamForWriteAsync())
{
s.Write(fileBytes, 0, fileBytes.Length);
}
}
Reading a text file
The following code shows how to read the text data.
private async void btnRead_Click(object sender, RoutedEventArgs e)
{
await ReadFile();
// Update UI.
this.btnWrite.IsEnabled = true;
this.btnRead.IsEnabled = false;
}
private async Task ReadFile()
{
// Get the local folder.
StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
if (local != null)
{
// Get the DataFolder folder.
var dataFolder = await local.GetFolderAsync("DataFolder");
// Get the file.
var file = await dataFolder.OpenStreamForReadAsync("DataFile.txt");
// Read the data.
using (StreamReader streamReader = new StreamReader(file))
{
this.textBlock1.Text = streamReader.ReadToEnd();
}
}
}
See Also
Other Resources
Quickstart: Working with files and folders in Windows Phone 7