我使用FileBrowserDialog返回的路徑名爲C:\Users\<user name>\Documents\Folder
,我傾向於使用My Documents\Folder
來顯示。將絕對路徑名轉換爲更個人化的東西
除了使用
pathname.StartsWith(My.Computer.FileSystem.SpecialDirectories.MyDocuments)
,看看是否在路徑我的文檔「屬於」,有沒有轉換路徑使用My Documents
的另一種方式?
我使用FileBrowserDialog返回的路徑名爲C:\Users\<user name>\Documents\Folder
,我傾向於使用My Documents\Folder
來顯示。將絕對路徑名轉換爲更個人化的東西
除了使用
pathname.StartsWith(My.Computer.FileSystem.SpecialDirectories.MyDocuments)
,看看是否在路徑我的文檔「屬於」,有沒有轉換路徑使用My Documents
的另一種方式?
你可以使用這種方法,其循環的父目錄到根:
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));
}
爲什麼顯示爲'我的文檔\ Folder'而不是'的文檔\ Folder'? – nawfal
因爲它是一種簡寫形式,適用於所有版本的Windows。 – EmJay