有一些方法可以在Windows上使用C#获取下载文件夹,但如何做到这一点才能在Windows和Linux上工作?(如果重要,界面为AvaloniaUI.)
有一些方法可以在Windows上使用C#获取下载文件夹,但如何做到这一点才能在Windows和Linux上工作?(如果重要,界面为AvaloniaUI.)
Short Answer: 你不能
许多Linux系统都有下载文件夹,但这只是惯例,标准Linux根本没有下载文件夹.wget和curl等工具在当前工作目录中下载数据,而大多数发行版则以自己独特的方式存储下载文件夹.
您拥有的最简单的 Select 是要求用户在Linux上 Select 他们的下载文件夹,这里有一个代码片段可以帮助您这样做:
[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
}
}