我的应用中存在一些可以下载音乐文件列表的问题。我正在尝试设置以下文件夹结构。音乐库>艺术家>发布名称。开始下载时,第一首歌曲的文件夹结构已正确设置。第二次下载开始后,在尝试创建第二个子文件夹(版本名称)时,总是会收到“找不到文件”异常。这是我的代码。
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);
}
}
我不知道为什么它第一次有效但第二首歌失败了。
答案 0 :(得分:1)
根据CreateFileAsync
的{{3}},如果<{p>},它会抛出FileNotFoundExcption
文件夹名称包含无效字符,或文件夹名称的格式不正确。
因此,您可能需要使用下划线等其他内容替换无效字符。
var fixedFolderName = string.Join(
"_",
song.releaseName.Split(Path.GetInvaildFileNameChars()));