【问题标题】:Get path of directoryinfo object获取 directoryinfo 对象的路径
【发布时间】:2013-12-03 09:54:02
【问题描述】:

用 C# 编写一些代码,我想知道是否有办法获取 directoryinfo 对象的正确路径?

目前我有一个目录,例如:

DirectoryInfo dirInfo = new DirectoryInfo(pathToDirectory);

问题是,如果我想获取特定 dirInfo 对象的路径,它总是返回调试路径(bin 文件夹)。如果原始 dirInfo 对象正在引用 D:\testDirectory 路径中的目录,那么我想要一种方法在代码中的其他位置再次获取该路径,而不是获取 \bin\debug\testDirectory

有什么办法吗?

目前我正在尝试使用 Path 获取 dirInfo 的路径:

Console.WriteLine("Path: " + Path.GetFullPath(dirInfo.ToString()));

【问题讨论】:

  • 什么是 pathToDirectory?是 D:\testDirectory 还是调试路径?
  • 你如何获得dirInfo 的路径?
  • 您能否显示用于获取“DirectoryInfo 的路径”的代码?对于示例代码,请尽可能使用常量值(即当您的代码不起作用时,pathToDirectory 的值是什么)
  • @JustinPihony pathToDirectory 是字符串@"D:\testDirectory"
  • 您要么没有显示您的代码,要么不知道传递给它的内容:Path.GetFullPath(new DirectoryInfo(@"D:\testDirectory ").ToString()) 按预期返回“D:\testDirectory”。请仔细检查您的样品。

标签: c# directoryinfo


【解决方案1】:

试试这个。

string pathToDirctory = "D:\\testDirectory";
DirectoryInfo dirInfo = new DirectoryInfo(pathToDirctory);
string path = dirInfo.FullName;
Console.WriteLine(path);

【讨论】:

  • @user1806716 - 请注意,此代码的行为与您声称拥有的代码完全相同 - DirectoryInfoToString() “返回用户传递的原始路径。”
  • @AlexeiLevenkov:我认为 OP 正在发送“testDirectory”相对路径,因此它被添加到当前路径(dubug 文件夹)中。
  • @user1806716 6 分钟... :)
【解决方案2】:

DirectoryInfo 代表一个特定的目录。当你创建它时,它代表什么目录取决于你给它的路径。如果你给它一个absolute 路径,比如c:\foo\bar\baz\bat,那就是你得到的目录。另一方面,如果您给它一个相对 路径,例如foo\bar\baz\bat,则该路径是相对于进程的当前工作目录。默认情况下,它继承自产生当前进程的进程。 Visual Studio 启动调试会话并将被调试进程的 CWD 设置为其bin 目录。所以如果你创建一个DirectoryInfo 并给它一个类似testDirectory 的路径,你会得到一个关于[project-root]\bin\Debug\testDirectoryDirectoryInfo

如果您需要绝对路径,则必须指定该绝对路径。没有任何捷径。

【讨论】:

  • 所以这里 OP 必须提供 DirectoryInfo 的相对路径而不是绝对路径,这就是为什么他将路径设置为=> projectfolder/bin/debug/DitestDirectory 对吗?
猜你喜欢
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
相关资源
最近更新 更多