c# - 使用 C# 获取解决方案文件的父文件夹的路径

标签 c# file path io streamreader

我是 C# 的初学者,我有一个正在从中读取文件的文件夹。

我想读取位于解决方案文件的父文件夹中的文件。我该怎么做?

string path = "";
StreamReader sr = new StreamReader(path);

因此,如果我的文件 XXX.sln 位于 C:\X0\A\XXX\ 中,则读取 .txt 中的文件 C:\X0\A\

最佳答案

您可能会喜欢这个更通用的解决方案,它依赖于通过扫描当前目录或选定目录的所有父目录来找到解决方案 *.sln 文件,同时涵盖找不到解决方案目录的情况!

public static class VisualStudioProvider
{
    public static DirectoryInfo TryGetSolutionDirectoryInfo(string currentPath = null)
    {
        var directory = new DirectoryInfo(
            currentPath ?? Directory.GetCurrentDirectory());
        while (directory != null && !directory.GetFiles("*.sln").Any())
        {
            directory = directory.Parent;
        }
        return directory;
    }
}

用法:

// get directory
var directory = VisualStudioProvider.TryGetSolutionDirectoryInfo();
// if directory found
if (directory != null)
{
    Console.WriteLine(directory.FullName);
}

在你的情况下:

// resolve file path
var filePath = Path.Combine(
    VisualStudioProvider.TryGetSolutionDirectoryInfo()
    .Parent.FullName, 
    "filename.ext");
// usage file
StreamReader reader = new StreamReader(filePath);

尽情享受吧!

现在,一个警告......您的应用程序应该与解决方案无关 - 除非这是我不介意的某个解决方案处理工具的个人项目。请理解,您的应用程序一旦分发给用户,驻留在没有解决方案的文件夹中。现在,您可以使用“ anchor ”文件。例如。像我一样搜索父文件夹并检查是否存在空文件 app.anchormySuperSpecificFileNameToRead.ext ;P 如果你想让我写我可以的方法 - 让我知道。

现在,您可能真的很享受! :D

关于c# - 使用 C# 获取解决方案文件的父文件夹的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19001423/

相关文章:

c# - 如何以编程方式选择 webBrowser 控件中的文本? C#

c# - 绑定(bind)到链接到 EF4 实体的绑定(bind)源时如何对 DataGridView 进行排序

时间:2019-01-17 标签:c#TcpListenerasyncBinaryFormatter.Deserialize

c# - 为插件架构动态加载程序集

python - 在设定的行范围内读取文本文件

ruby - 当用 Ruby 写入文件时,为什么它有时会发生在我接下来的几行代码之后?

java - 在原始文件夹中查找文件的路径?

Python 3 : ResourceWarning: unclosed file <_io. TextIOWrapper 名称 ='PATH_OF_FILE'

java - 当我希望用户在我的网站上上传文件时,我的路径应该是什么?

linux - 来自 vim 的 Bash 命令