Пример #1
0
        public string GetPathRelativeTo(string basePath)
        {
            var dir = new DirectoryInfo(basePath);

            var baseFs = new FolderStack(dir);
            var fileFs = new FolderStack(new FileInfo(FullPath).Directory);
            var kickedStack = new Stack<DirectoryInfo>();

            string temp = string.Empty;
            while (baseFs.CurrentDirectory.FullName != fileFs.CurrentDirectory.FullName)
            {
                if (baseFs.CurrentDirectory.FullName.Length > fileFs.CurrentDirectory.FullName.Length)
                {
                    baseFs.Pop();
                    temp += "../";
                }
                else
                    kickedStack.Push(fileFs.Pop());
            }
            while (kickedStack.Any())
            {
                temp += kickedStack.Pop().Name + "/";
            }
            temp += new FileInfo(FullPath).Name;
            return temp;
        }
Пример #2
0
 private bool ProcessDirectory(FolderStack fs, string curDir)
 {
     if (curDir == "..")
         return fs.Pop() != null;
     return fs.Push(curDir);
 }