2010-01-08 45 views
6

如果我有一個絕對的DirectoryInfo路徑和相對的FileInfo路徑,我怎樣才能將它們合併成一個絕對的FileInfo路徑?結合一個DirectoryInfo和一個FileInfo路徑

例如:

var absoluteDir = new DirectoryInfo(@"c:\dir"); 
var relativeFile = new FileInfo(@"subdir\file"); 
var absoluteFile = new FileInfo(absoluteDir, relativeFile); //-> How to get this done? 

回答

7

如果absoluteDir和relativeFile存在僅用於創建absoluteFile的唯一目的,則應該使用簡單的字符串替代它們,並僅將absoluteFile作爲FileInfo。

var absoluteDir = @"c:\dir"; 
var relativeFile = @"subdir\file"; 
var absoluteFile = new FileInfo(Path.Combine(absoluteDir, relativeFile)); 

如果不是的話,你真的需要他們打字,那麼你應該使用Path.Combine適用於每個人的OriginalPath,如:

var absoluteDir = new DirectoryInfo(@"c:\dir"); 
var relativeFile = new FileInfo(@"subdir\file"); 
var absoluteFile = new FileInfo(Path.Combine(absoluteDir.OriginalPath), relativeFile.OriginalPath)); 
+1

謝謝!所以,顯然,在.NET類庫中沒有真正的封裝文件系統路徑的類。順便說一句:你不想錯過這樣的課程嗎? – 2010-01-08 11:26:34

+0

我不會錯過一個類,但可能是一個構造函數重載,它接受兩個或更多FileSystemInfo(FileInfo和DirectoryInfo的基類)或使用參數的字符串。構造函數然後將它們組合起來。 – 2010-01-08 11:32:47

0

試試這個:

Path.Combine(absolute, relative); 
0

Path.Combine

+0

是否與DirectoryInfo中和的FileInfo這項工作,還是隻有字符串? – 2010-01-08 10:52:42

+0

只有字符串;你不能使用'dir.FullName'或'file.FullName'嗎? – 2010-01-08 10:56:52

2

您可以使用FileInfo類的FullPath屬性。

FileInfo.FullPath ,會得到完全合格的路徑,而

FileInfo.OriginalPath 會給你指定的相對路徑。

如果您只是想結合不同的路徑,例如您想要將相對路徑添加到anoter路徑的文件,那麼您應該使用Path.Combine()來實現此目的,如前所述。

相關問題