C # UWP: копирование файла в папку внутри локальной папки не работает должным образом - PullRequest
0 голосов
/ 07 сентября 2018

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

Приложение позволит пользователю нажать кнопку и затем загрузить аудиофайл. Я написал код для копирования музыкального файла с компьютера пользователя в музыкальную папку внутри локальной папки, которую я создал. Кажется, мой код работает нормально, без видимых ошибок, однако, просматривая папки приложения, я не вижу музыкальную папку или файл, который был помещен в нее.

Вот мой код для MainPage.xaml.cs:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace MusicLibraryTest
{   
    public sealed partial class MainPage : Page
    { 
        public MainPage()
        {
            this.InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            //Music Library is opened on user's computer and displays all available mp3 files    
            var picker = new Windows.Storage.Pickers.FileOpenPicker
            {
                ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail,
                SuggestedStartLocation =  Windows.Storage.Pickers.PickerLocationId.MusicLibrary
            };

            picker.FileTypeFilter.Add(".mp3");
            picker.FileTypeFilter.Add(".mp4");
            picker.FileTypeFilter.Add(".m4a");

            var file = await picker.PickSingleFileAsync();
            var folder = ApplicationData.Current.LocalFolder;
            var musicFolder = await folder.CreateFolderAsync("musicfolder", CreationCollisionOption.OpenIfExists);

            //put file in future access list so it can be accessed when application is closed and reopened
            Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(file);
            //File is copied to local folder for use in music library
            if (folder != null && file != null)
            {
                await file.CopyAsync(musicFolder, file.Name, NameCollisionOption.GenerateUniqueName);
            }
        }
    }
}

Мой код от MainPage.xaml:

<Page
    x:Class="MusicLibraryTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MusicLibraryTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid>
        <Button Content="Add Music" HorizontalAlignment="Left" Margin="750,407,0,0" VerticalAlignment="Top" Click="Button_Click" />
    </Grid>
</Page>

Вероятно, это простое исправление, но есть ли в моем коде что-то очевидное, что не позволило бы скопировать создание папки или файла?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вы смотрите не в том месте.Я думаю, вы смотрите на папку bin проекта.

Приложение необходимо развернуть до его запуска, и его LocalFolder находится по адресу

% localappdata% \ Packages \ PACKAGENAME \ LocalState

Где PACKAGENAME - это имя семейства пакетов в виде

YourApp_8wekyb3d8bbwe

, которое можно проверить в .appxmanifest изпроект, под вкладкой Packaging.

0 голосов
/ 07 сентября 2018

Вы проверяете файл на своем ПК или на устройстве?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...