C#在win XP中获取输入文件的完整路径

时间:2012-06-10 01:53:17

标签: c#

我写了一个简单的控制台工具,它读取文件然后写出来。我打算只拖放文件,然后将输出弹出与输入文件相同的目录。

所有测试都有效,当我从命令行调用它时,一切都按预期发布。但是,当我尝试在资源管理器中拖放它时,没有创建任何文件。

我在系统中进行了搜索,发现它们全部被转储到我的用户文件夹下的Documents and Settings,当我打印出它所说的完整路径时。

这很奇怪。不会Path.GetFullPath返回输入文件的绝对路径吗?相反,它看起来只是将用户目录路径组合到输入的文件名。

编辑:这是代码。我觉得我在某个地方犯了一个逻辑错误,但似乎无法看到它。

filename = System.IO.Path.GetFileName(args[i]);
abspath = Path.GetFullPath(filename);
dirpath = Path.GetDirectoryName(abspath);
....
Console.WriteLine(dirpath);

1 个答案:

答案 0 :(得分:1)

Path.GetFullPath应返回您传入的路径字符串的绝对路径。

Path.GetFileName(string path)仅返回您传入的文件的文件名和扩展名。例如,System.IO.Path.GetFileName("C:\SomeDirectory\Test.txt");只会返回“Test.txt”。您将需要使用Path.GetDirectoryName来获取输入文件的路径,如下所示:

string inputDirectory = System.IO.Path.GetDirectoryName(args[i]);

或者,您可以使用FileInfo类来检索有关输入文件的更多信息。例如:

// Assuming args[i] = "C:\SomeDirectory\Test.txt"
FileInfo inputFile = new FileInfo(args[i]);
string inputDirectory = inputFile.DirectoryName; // "C:\SomeDirectory"
string inputFileName = inputFile.Name; // "Test.txt"
string fullInputFile = inputFile.FullName; // "C:\SomeDirectory\Test.txt"