У меня проблема с копированием файла. Мне нужно скопировать файл.db и поместить его в новую папку (называемую "каталог", выбранную ранее с помощью FolderPicker). Код, который у меня есть: (это для приложения магазина для Windows 8.1)
try{
StorageFile newDB = await StorageFile.GetFileFromPathAsync(directory);
StorageFile originalDB = await StorageFile.GetFileFromPathAsync(Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "AFBIT.db"));
await newDB.CopyAndReplaceAsync(originalDB);
}
catch(Exception ex){
}
У меня есть исключение в neDB и сказано: "Значение не входит в ожидаемый диапазон". Я не знаю другого способа скопировать файл в xaml, если вы знаете, в чем проблема или другой способ сделать это, я буду очень благодарен.
У меня есть нечто похожее, которое я использую в настоящее время при копировании созданного мной метода CopyFileAsync
, если это поможет вам в отношении реорганизации кода в рабочую модель
public static async Task CopyFileAsync(string sourcePath, string destinationPath)
{
try
{
using (Stream source = File.Open(sourcePath, FileMode.Open))
{
using (Stream destination = File.Create(destinationPath))
{
await source.CopyToAsync(destination);
}
}
}
catch (IOException io)
{
HttpContext.Current.Response.Write(io.Message); //I use this within a web app change to work for your windows app
}
}
async
подход.
Greg
Я обнаружил это, когда делал какую-то стандартную загрузку .aspx вместе с тем, что наш код работал в приложении AngularJS
. У меня не было проблем с этим подходом, и он работает очень быстро ... еще раз спасибо ...
Я не уверен, что вы действительно интересуетесь, но я считаю, что ваша попытка:
public static bool CopyFile(string source, string destination)
{
if(!File.Exist(source))
return false;
if(string.IsNullOrEmpty(destination))
return false;
try
{
using(var reader = File.Open(source))
using(var writer = File.Create(destination))
reader.CopyTo(writer);
return true;
}
catch(IOException ex) { return false; }
}
Готовьте, что это съест ваше исключение, а затем return false
если он по какой-либо причине не сработает.
Это по существу копирует файл, я заметил, что вы пытаетесь прочитать локальную папку приложения. Будьте осторожны, так как это часто требует привилегий администратора, когда он находится в нескольких местах в операционной системе.