2012-06-10 50 views
0

我寫了一個簡單的控制檯工具,它讀取一個文件,然後寫出一些東西。我打算只是拖放文件,然後將輸出彈出到與輸入文件相同的目錄中。C#Win XP中輸入文件的完整路徑

所有的測試工作,當我從命令行調用它時,一切都按預期發佈。但是,當我嘗試在資源管理器中拖放它時,沒有創建文件。

我對系統進行了一次搜索,發現它們全都在我的用戶文件夾下的Documents and Settings下傾倒,當我打印出完整的路徑時,就是它所說的。

這很奇怪。 Path.GetFullPath會不會返回輸入文件的絕對路徑?相反,它看起來只是將該用戶目錄路徑與輸入文件名相結合。

編輯:這裏的代碼。我覺得我在某個地方犯了一個邏輯錯誤,但似乎無法看到它。

filename = System.IO.Path.GetFileName(args[i]); 
abspath = Path.GetFullPath(filename); 
dirpath = Path.GetDirectoryName(abspath); 
.... 
Console.WriteLine(dirpath); 
+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" 
+0

哦,我知道我犯了一個錯誤。 – MxyL