在 Windows 和 Linux 上获取下载文件夹

问题描述 投票:0回答:1

有一些方法可以在 Windows 上使用 C# 获取下载文件夹,但是如何做到这一点才能使其在 Windows 和 Linux 上工作? (如果重要的话接口是 AvaloniaUI。)

c# linux
1个回答
1
投票

简短回答: 你不能

许多Linux系统都有一个Downloads文件夹,但这只是一个约定,标准Linux根本没有Downloads文件夹。 wget 和curl 等工具会在当前工作目录中下载数据,而大多数发行版都以自己独特的方式存储下载文件夹。

最简单的选择是要求用户在 Linux 上选择他们的下载文件夹,这里有一个代码片段可以帮助您这样做:

    [DllImport("shell32.dll", SetLastError = true)]
    static extern int SHGetKnownFolderPath(ref Guid folderid, uint dwFlags, IntPtr hToken, out IntPtr pszPath);

    static string GetDownloadsFolderPath()
    {
        Guid downloadsFolderId = new Guid("374DE290-123F-4565-9164-39C4925E467B");
        IntPtr pathPtr = IntPtr.Zero;

        int result = SHGetKnownFolderPath(ref downloadsFolderId, 0, IntPtr.Zero, out pathPtr);

        if (result == 0)
        {
            string path = Marshal.PtrToStringAuto(pathPtr);
            Marshal.FreeCoTaskMem(pathPtr);
            return path;
        }
        else
        {
            // Prompt the user for their download path
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.