2014-02-20 59 views
0

我使用FileBrowserDialog返回的路徑名爲C:\Users\<user name>\Documents\Folder,我傾向於使用My Documents\Folder來顯示。將絕對路徑名轉換爲更個人化的東西

除了使用

pathname.StartsWith(My.Computer.FileSystem.SpecialDirectories.MyDocuments) 

,看看是否在路徑我的文檔「屬於」,有沒有轉換路徑使用My Documents的另一種方式?

+0

爲什麼顯示爲'我的文檔\ Folder'而不是'的文檔\ Folder'? – nawfal

+0

因爲它是一種簡寫形式,適用於所有版本的Windows。 – EmJay

回答

1

你可以使用這種方法,其循環的父目錄到根:

DirectoryInfo directory = new DirectoryInfo("C:\\Users\\Tim\\Documents\\Folder\\file.ext"); 
string myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
bool isMyDocs = directory.FullName == myDocs; 
while (!isMyDocs && (directory = directory.Parent) != null) 
    isMyDocs = directory.FullName == myDocs; 
// use your personal folder-name acc. to isMyDocs 

更新

我應該重新短語的問題。我想結束速記路徑 表示法,例如, \我的文檔\文件夾\ file.ext

我認爲這將是明確的:

string yourFile = "C:\\Users\\Tim\\Documents\\Folder\\file.ext"; 
string yourDir = Path.GetDirectoryName(yourFile); 
DirectoryInfo directory = new DirectoryInfo(yourDir); 
string myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
bool isMyDocs = directory.FullName == myDocs; 
while (!isMyDocs && (directory = directory.Parent) != null) 
    isMyDocs = directory.FullName == myDocs; 
string personalPath = yourDir; 
if(isMyDocs) 
{ 
    personalPath = Path.Combine("My Documents", "Folder", Path.GetFileName(yourFile)); 
} 
+0

或'Path.GetDirectoryName'而不是'DirectoryInfo'類。 – nawfal

+0

@nawfal:但我需要'DirectoryInfo.Parent'來循環到根目錄。 –

+0

是的,公平點。 – nawfal

相關問題