找不到StorageFolder文件错误

时间:2015-03-13 17:08:56

标签: c# windows-8 windows-phone-8.1

我的应用中存在一些可以下载音乐文件列表的问题。我正在尝试设置以下文件夹结构。音乐库>艺术家>发布名称。开始下载时,第一首歌曲的文件夹结构已正确设置。第二次下载开始后,在尝试创建第二个子文件夹(版本名称)时,总是会收到“找不到文件”异常。这是我的代码。

    private async Task StartDownload(List<DownloadData> data)
    {
        foreach (DownloadData song in data)
        {
            // Set the source of the download
            Uri source = new Uri(song.downloadUrl);

            // Create folder stucture
            StorageFolder artistFolder;
            try
            {
                artistFolder = await KnownFolders.MusicLibrary.CreateFolderAsync(song.artistName, CreationCollisionOption.OpenIfExists);
            }
            catch
            {
                throw;
            }
            StorageFolder releaseFolder;
            try
            {
                releaseFolder = await artistFolder.CreateFolderAsync(song.releaseName, CreationCollisionOption.OpenIfExists);
            }
            catch
            {
                throw; // Exception Thrown here
            }

            // Create file
            StorageFile destinationFile;
            try
            {
                destinationFile = await releaseFolder.CreateFileAsync(song.fileName, CreationCollisionOption.GenerateUniqueName);
            }
            catch
            {
                throw;
            }

            BackgroundDownloader downloader = new BackgroundDownloader();
            DownloadOperation download = downloader.CreateDownload(source, destinationFile);

            List<DownloadOperation> requestOperations = new List<DownloadOperation>();
            requestOperations.Add(download);

            await HandleDownloadAsync(download, true);
        }
    }

我不知道为什么它第一次有效但第二首歌失败了。

1 个答案:

答案 0 :(得分:1)

根据CreateFileAsync的{​​{3}},如果<{p>},它会抛出FileNotFoundExcption

  

文件夹名称包含无效字符,或文件夹名称的格式不正确。

因此,您可能需要使用下划线等其他内容替换无效字符。

var fixedFolderName = string.Join(
    "_", 
    song.releaseName.Split(Path.GetInvaildFileNameChars()));