如何在Windows和Linux中获取根目录?

发布于 2025-01-11 03:02:03 字数 547 浏览 0 评论 0原文

我使用 .net6 编写了一个小软件,它应该在 Windows 和 Linux (Ubuntu) 上运行。在此软件中,我需要访问文件夹中的文件。 Linux:/folder1/folder2/file.txt Windows:d:\folder1\folder2\file.txt 两个系统上的文件夹结构和文件名相同。 到目前为止,此代码可以运行

string[] pfad;
pfad = new[] { "folder1", "folder2","file.txt" };
Console.WriteLine(System.IO.Path.Combine(pfad));

并在 Linux 和 Windows 下提供正确的文件夹结构。

如何定义根目录? Linux 中为 /,Windows 中为 d:\ 我可以以某种方式检测操作系统类型或者最好的方法是什么?

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);在 Windows 下“修复”到 C:... - 我想使用另一个驱动器。

I wrote a small software using .net6 which should run on Windows and Linux (Ubuntu). In this software I need to access a file in a folder.
Linux: /folder1/folder2/file.txt
Windows: d:\folder1\folder2\file.txt
The folder structure and the filename is the same on both systems.
This code works so far

string[] pfad;
pfad = new[] { "folder1", "folder2","file.txt" };
Console.WriteLine(System.IO.Path.Combine(pfad));

and delivers the correct folder structur under Linux and Windows.

How can I define the root directory?
/ in Linux and d:\ in Windows
Can I detect the OS type somehow or what is the best approach?

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); is "fix" under Windows to C:... - I want to use another drive.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

水溶 2025-01-18 03:02:03

借用 stefan 答案,但使用 OperatingSystem 类而不是 RuntimeInformation (因为 OperatingSystemSystem 的一部分,我相信它是更好的选择)

string rootPath;

if (OperatingSystem.IsWindows())
    rootPath = @"d:\";
else if (OperatingSystem.IsLinux())
    rootPath = "/";
else
{
    // maybe throw an exception
}

Borrowing from stefan answer but using OperatingSystem class instead of RuntimeInformation (since OperatingSystem is part of System i believe it's preferable)

string rootPath;

if (OperatingSystem.IsWindows())
    rootPath = @"d:\";
else if (OperatingSystem.IsLinux())
    rootPath = "/";
else
{
    // maybe throw an exception
}
王权女流氓 2025-01-18 03:02:03

您可以像这样使用 System.Runtime.InteropServices.RuntimeInformation :

        string rootPath;  

        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
        {
            rootPath = @"d:\";
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
        {
            rootPath = "/";
        }

You can use System.Runtime.InteropServices.RuntimeInformation like this:

        string rootPath;  

        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
        {
            rootPath = @"d:\";
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
        {
            rootPath = "/";
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文