0

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

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

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

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

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

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

1 回答 1

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"
于 2012-06-10T02:00:42.203 回答