在 WP8.1 中将 Sqlite 文件从本地存储复制到 SD 卡
Copying A Sqlite File from Local Storage to an SD Card in WP8.1
如何将我的文件从本地存储复制到 SD 卡或 WP8.1 中的已知文件夹以进行备份?
我正在使用文件夹选择器 select 保存位置。
我的代码是:
Private Async Sub ButtonBackup_Click(sender As Object, e As RoutedEventArgs)
Dim FolderPicker As New FolderPicker()
FolderPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary
FolderPicker.ViewMode = PickerViewMode.List
FolderPicker.PickFolderAndContinue()
End Sub
Public Async Sub ContinueFolderPicker(ByVal args As FolderPickerContinuationEventArgs) Implements IFolderPickerContinuable.ContinueFolderPicker
Dim folder As StorageFolder = args.Folder
If folder IsNot Nothing Then
' Application now has read/write access to all contents in the picked folder (including other sub-folder contents)
StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder)
'OutputTextBlock.Text = "Picked folder: " & folder.Name
Else
'OutputTextBlock.Text = "Operation cancelled."
End If
Dim file As StorageFile = Await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("ContactsManager.sqlite")
CopyFileToFolder(file, folder)
End Sub
Public Async Sub CopyFileToFolder(ByVal filetoCopy As StorageFile, ByVal folder As StorageFolder)
Await filetoCopy.CopyAsync(folder)
End Sub
但是下面一行没有开始:
Public Async Sub ContinueFolderPicker(ByVal args As FolderPickerContinuationEventArgs) Implements IFolderPickerContinuable.ContinueFolderPicker
终于解决了我的问题,下面的代码是正确的。
Private Async Sub ButtonBackup_Click(sender As Object, e As RoutedEventArgs)
Dim SqliteStorageFile As StorageFile = Await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("ContactsManager.sqlite")
Dim buffer() As Byte
Dim stream As Stream = Await SqliteStorageFile.OpenStreamForReadAsync()
buffer = New Byte(stream.Length - 1) {}
Await stream.ReadAsync(buffer, 0, CInt(stream.Length))
Dim savePicker = New FileSavePicker()
savePicker.FileTypeChoices.Add("Backup File", New List(Of String)() From {".backup"})
savePicker.SuggestedFileName = SqliteStorageFile.Name
Dim file = Await savePicker.PickSaveFileAsync()
If file IsNot Nothing Then
CachedFileManager.DeferUpdates(file)
Await FileIO.WriteBytesAsync(file, buffer)
CachedFileManager.CompleteUpdatesAsync(file)
End If
End Sub
如何将我的文件从本地存储复制到 SD 卡或 WP8.1 中的已知文件夹以进行备份?
我正在使用文件夹选择器 select 保存位置。
我的代码是:
Private Async Sub ButtonBackup_Click(sender As Object, e As RoutedEventArgs)
Dim FolderPicker As New FolderPicker()
FolderPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary
FolderPicker.ViewMode = PickerViewMode.List
FolderPicker.PickFolderAndContinue()
End Sub
Public Async Sub ContinueFolderPicker(ByVal args As FolderPickerContinuationEventArgs) Implements IFolderPickerContinuable.ContinueFolderPicker
Dim folder As StorageFolder = args.Folder
If folder IsNot Nothing Then
' Application now has read/write access to all contents in the picked folder (including other sub-folder contents)
StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder)
'OutputTextBlock.Text = "Picked folder: " & folder.Name
Else
'OutputTextBlock.Text = "Operation cancelled."
End If
Dim file As StorageFile = Await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("ContactsManager.sqlite")
CopyFileToFolder(file, folder)
End Sub
Public Async Sub CopyFileToFolder(ByVal filetoCopy As StorageFile, ByVal folder As StorageFolder)
Await filetoCopy.CopyAsync(folder)
End Sub
但是下面一行没有开始:
Public Async Sub ContinueFolderPicker(ByVal args As FolderPickerContinuationEventArgs) Implements IFolderPickerContinuable.ContinueFolderPicker
终于解决了我的问题,下面的代码是正确的。
Private Async Sub ButtonBackup_Click(sender As Object, e As RoutedEventArgs)
Dim SqliteStorageFile As StorageFile = Await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("ContactsManager.sqlite")
Dim buffer() As Byte
Dim stream As Stream = Await SqliteStorageFile.OpenStreamForReadAsync()
buffer = New Byte(stream.Length - 1) {}
Await stream.ReadAsync(buffer, 0, CInt(stream.Length))
Dim savePicker = New FileSavePicker()
savePicker.FileTypeChoices.Add("Backup File", New List(Of String)() From {".backup"})
savePicker.SuggestedFileName = SqliteStorageFile.Name
Dim file = Await savePicker.PickSaveFileAsync()
If file IsNot Nothing Then
CachedFileManager.DeferUpdates(file)
Await FileIO.WriteBytesAsync(file, buffer)
CachedFileManager.CompleteUpdatesAsync(file)
End If
End Sub