Скопируйте файл в новую папку

1

У меня проблема с копированием файла. Мне нужно скопировать файл.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, если вы знаете, в чем проблема или другой способ сделать это, я буду очень благодарен.

  • 3
    Что вы имеете в виду скопировать файл в «xaml»?
Теги:
file
xaml
copy

2 ответа

2

У меня есть нечто похожее, которое я использую в настоящее время при копировании созданного мной метода 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
    }
}
  • 0
    +1 за async подход.
  • 0
    спасибо Greg Я обнаружил это, когда делал какую-то стандартную загрузку .aspx вместе с тем, что наш код работал в приложении AngularJS . У меня не было проблем с этим подходом, и он работает очень быстро ... еще раз спасибо ...
Показать ещё 2 комментария
1

Я не уверен, что вы действительно интересуетесь, но я считаю, что ваша попытка:

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 если он по какой-либо причине не сработает.

Это по существу копирует файл, я заметил, что вы пытаетесь прочитать локальную папку приложения. Будьте осторожны, так как это часто требует привилегий администратора, когда он находится в нескольких местах в операционной системе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню