承接上篇,本文專注 StorageFile 與 StorageFolder 的進階 CRUD 操作,所有 API 均為非同步(await)。
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBox Name="tbFileName" Text="test.txt" .../>
<TextBox Name="tbContent" Text="預設檔案內容" .../>
<TextBlock Name="tb_show" .../>
<!-- 檔案操作 -->
<Button Name="btnCreateFile" Content="建立並寫入檔案" Click="btnCreateFile_Click" .../>
<Button Name="btnReadFile" Content="讀取字串檔案" Click="btnReadFile_Click" .../>
<Button Name="btnDeleteFile" Content="刪除檔案" Click="btnDeleteFile_Click" .../>
<Button Name="btnMoveFile" Content="移動檔案" Click="btnMoveFile_Click" .../>
<Button Name="btnCopyFile" Content="複製檔案" Click="btnCopyFile_Click" .../>
<Button Name="btnReNameFile" Content="重新命名檔案" Click="btnReNameFile_Click" .../>
<!-- 資料夾操作 -->
<Button Name="readFolder" Content="讀取資料夾" Click="readFolder_Click" .../>
<Button Name="btnCreateFolder" Content="建立資料夾" Click="btnCreateFolder_Click" .../>
<Button Name="btnDeleteFolder" Content="刪除資料夾" Click="btnDeleteFolder_Click" .../>
<Button Name="btnReNameFolder" Content="重新命名資料夾" Click="btnReNameFolder_Click" .../>
</Grid>
// 刪除檔案
private async void btnDeleteFile_Click(object sender, RoutedEventArgs e) {
try {
var file = await storageFolder.GetFileAsync(tbFileName.Text.Trim());
await file.DeleteAsync();
tb_show.Text = $"提示:{tbFileName.Text.Trim()} 檔案刪除成功!";
} catch { tb_show.Text = "提示:未找到該檔案,請先建立檔案"; }
}
// 移動檔案(文件庫 → 音樂庫)
private async void btnMoveFile_Click(object sender, RoutedEventArgs e) {
try {
var file = await storageFolder.GetFileAsync(tbFileName.Text.Trim());
var dest = KnownFolders.MusicLibrary;
await file.MoveAsync(dest, "moveFile.txt", NameCollisionOption.ReplaceExisting);
tb_show.Text = $"提示:文件庫\\文件\\{tbFileName.Text.Trim()} 移動到 音樂庫\\moveFile.txt";
} catch { tb_show.Text = "提示:未找到該檔案,請先建立檔案"; }
}
// 複製檔案(文件庫內備份)
private async void btnCopyFile_Click(object sender, RoutedEventArgs e) {
try {
var file = await storageFolder.GetFileAsync(tbFileName.Text.Trim());
var copied = await file.CopyAsync(KnownFolders.DocumentsLibrary, "copyFile.txt", NameCollisionOption.ReplaceExisting);
tb_show.Text = $"提示:文件庫\\文件\\{tbFileName.Text.Trim()} 複製一份到 文件庫\\文件\\copyFile.txt";
} catch { tb_show.Text = "提示:未找到該檔案,請先建立檔案"; }
}
// 重新命名檔案
private async void btnReNameFile_Click(object sender, RoutedEventArgs e) {
try {
var file = await storageFolder.GetFileAsync(tbFileName.Text.Trim());
await file.RenameAsync("renameFile.txt", NameCollisionOption.ReplaceExisting);
tb_show.Text = $"提示:文件庫\\文件\\{tbFileName.Text.Trim()} 重命名為 文件庫\\文件\\renameFile.txt";
} catch { tb_show.Text = "提示:未找到該檔案,請先建立檔案"; }
}
// 讀取圖片庫檔案清單
private async void readFolder_Click(object sender, RoutedEventArgs e) {
var folder = KnownFolders.PicturesLibrary;
var files = await folder.GetFilesAsync();
var info = "圖片庫資料夾下檔案名稱:";
foreach (var f in files) info += f.Name + "+";
tb_show.Text = info;
}
// 建立資料夾
private async void btnCreateFolder_Click(object sender, RoutedEventArgs e) {
try {
var folder = KnownFolders.PicturesLibrary;
await folder.CreateFolderAsync("NewMusic", CreationCollisionOption.ReplaceExisting);
tb_show.Text = "提示:圖片庫 下新建 圖片庫\\NewMusic 資料夾";
} catch { tb_show.Text = "提示:未找到該資料夾,請先建立資料夾"; }
}
// 刪除資料夾
private async void btnDeleteFolder_Click(object sender, RoutedEventArgs e) {
try {
var folder = KnownFolders.PicturesLibrary;
var sub = await folder.GetFolderAsync("NewMusic");
await sub.DeleteAsync();
tb_show.Text = "提示:圖片庫 下刪除 圖片庫\\NewMusic 資料夾";
} catch { tb_show.Text = "提示:未找到該資料夾,請先建立資料夾"; }
}
// 重新命名資料夾
private async void btnReNameFolder_Click(object sender, RoutedEventArgs e) {
try {
var folder = KnownFolders.PicturesLibrary;
var sub = await folder.GetFolderAsync("NewMusic");
await sub.RenameAsync("New Picture");
tb_show.Text = "提示:圖片庫 下重命名 圖片庫\\NewMusic 資料夾";
} catch { tb_show.Text = "提示:未找到該資料夾,請先建立資料夾"; }
}
完整原始碼:Win8File2.rar