我正在尝试将文件从UWP资源复制到用户的本地文件夹中。
我能得到的最接近的是:
public static void CopyDatabaseIfNotExists(string dbPath)
{
var storageFile = IsolatedStorageFile.GetUserStoreForApplication();
if (storageFile.FileExists(dbPath))
{
return;
}
using (var resourceStream = Application.GetResourceStream(new Uri("preinstalledDB.db", UriKind.Relative)).Stream)
{
using (var fileStream = storageFile.CreateFile(dbPath))
{
byte[] readBuffer = new byte[4096];
int bytes = -1;
while ((bytes = resourceStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
{
fileStream.Write(readBuffer, 0, bytes);
}
}
}
}
但这似乎不再适用于UWP。 GetResourceStream不再可用(“应用程序不包含'GetResourceStream'的定义”)。
有人可以告诉我这与UWP有什么关系?
非常感谢!
答案 0 :(得分:1)
您可以更简单一点,只需将ApplicationData.Current.LocalFolder
替换为您想要的文件夹即可。
try
{
await ApplicationData.Current.LocalFolder.GetFileAsync("preinstalledDB.db");
// No exception means it exists
return;
}
catch (System.IO.FileNotFoundException)
{
// The file obviously doesn't exist
}
// Cant await inside catch, but this works anyway
var storfile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///preinstalledDB.db"));
await storfile.CopyAsync(ApplicationData.Current.LocalFolder);
try
块可能看起来很奇怪,但它实际上是确定文件是否存在的最快方法。