将绝对路径名转换为更个性化的名称

时间:2014-02-20 13:09:48

标签: .net

我有一个使用FileBrowserDialog返回的路径名C:\Users\<user name>\Documents\Folder,我希望使用My Documents\Folder显示。

除了使用

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

查看“我的文档”中的路径名是否“属于”,是否有另一种方法可以将路径名转换为使用My Documents

1 个答案:

答案 0 :(得分: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

更新

  

我应该重新说出这个问题。我想以速记路径结束   符号,例如\ My Documents \ Folder \ 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));
}