FolderBrowserDialog 不在选定的位置保存文件

FolderBrowserDialog not saving files where selected

我正在尝试制作一个 YouTube 下载器来取乐。我看了一些教程并完成了它,但是当我下载它并 select 路径时,如果我选择 "Desktop",它不会下载,但如果我选择桌面上的文件夹,它会下载它但是不在文件夹里,在桌面上。我试图修复它,但没有任何效果。

我该如何解决?

这是我的代码:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles download.Click
    If url.Text <> "" Then
        If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
            stato.Text = "Downloading"
            Dim video = YouTube.Default.GetVideo(url.Text)
            FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.DesktopDirectory
            File.WriteAllBytes(FolderBrowserDialog1.SelectedPath & video.FullName, video.GetBytes())
            stato.Text = "Done!"
        End If
    Else
        MsgBox("Enter an URL!")
    End If
End Sub

如果 SelectedPath 没有该文件,请转到上一级,因为该文件很可能就在那里。这是您的修复程序,因此它会转到正确的文件夹:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles download.Click
    If url.Text <> "" Then
        FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.DesktopDirectory
        If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
            stato.Text = "Downloading"
            Dim video = YouTube.Default.GetVideo(url.Text)
            File.WriteAllBytes(System.IO.Path.Combine(FolderBrowserDialog1.SelectedPath, video.FullName), video.GetBytes())
            stato.Text = "Done!"
        End If
    Else
        MsgBox("Enter an URL!")
    End If
End Sub

请注意,我建议您改为使用 backgroundworker 组件进行下载。此外,理想情况下,您应该在保存时将字节保存到后台工作程序中的文件中,这样字节不会全部进入内存,而是直接进入您的文件。不过,这些建议不在您的问题范围内。