2012-08-09 45 views
1

目前我正在试图从命令行获取用户输入OutputPath写在C#文件有/无相对路径

using (outfile = new StreamWriter(OutputPath)) 
{ 
    outfile.Write(result); 
} 

如果给予或在c将文件写入此写入绝对路径:\ Windows \ System32下

如何使其成为绝对路径或取决于当前目录。有没有办法从命令行获取当前工作目录,或者是否有更好的API可以找出它。

感谢

回答

2

C#知道如何使用基于当前目录的相对路径。

如果您看到在C:\Windows\System32中创建的文件,那么可能是您当前的工作目录。

快捷方式可以设置正在启动的程序的工作目录。打开/保存常用文件对话框也会混淆当前的工作目录。

如果您不使用快捷方式启动应用程序,它将继承父进程中的当前目录。 explorer.exe通常具有C:\Windows\System32作为工作目录,这对于通过双击Explorer中的图标启动的应用程序而言非常常见。

+0

你是对的@本。我使用PowerShell,显然PowerShell打开的第一条路径是使用的路径。因此,如果以admin身份打开C:\ windows \ system32,否则它将是C:\ users \ myusername。这是为什么 ?尽管我在另一个目录中,但是我开始使用PowerShell的路径。 – 2012-08-09 22:09:01

2

您可以使用Directory.GetCurrentDirectory来获得OS当前的工作目录。

+0

这意味着我将需要检查输入是否是绝对的,如果不是我可以得到当前目录。我想知道是否有我可以使用的API可以找出两者。 – 2012-08-09 21:44:21

+0

@Saher:您可以使用[Path.IsPathRooted](http://msdn.microsoft.com/en-us/library/system.io.path.ispathrooted.aspx)函数来确定传递路径的* type *并基于此做出您的决定。 – Tigran 2012-08-09 21:47:59

3

使用Path.IsPathRooted来确定输入是否是绝对的,并Environment.CurrentDirectory获取当前目录。有了这些信息,你应该全部设置。

+0

-1的答案仅仅是重复Tigran已经提供的信息。 – 2012-08-09 23:49:41

+0

@BenVoigt我做了我自己的研究,我们在大致相同的时间结束了发布。我不是为什么你会冷静下来。 – Asik 2012-08-10 01:20:27

+0

在我投票的时候,你的回答是“一小时前”,Tigran的评论是“2小时前”。我看到它更接近了一点,你的回答是在他的回答7.5分钟后和他评论3分钟后。但它仍然只是混乱,有多个相同的答案。答案并不是很好,因为它只是重复了(相当大的努力)C#已经做了什么。问题是没有找到当前目录,这是错误的导演是最新的。 – 2012-08-10 05:27:45