我是 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.anchor
或 mySuperSpecificFileNameToRead.ext
;P 如果你想让我写我可以的方法 - 让我知道。
现在,您可能真的很享受! :D
关于c# - 使用 C# 获取解决方案文件的父文件夹的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19001423/