123456789101112131415161718192021222324252627282930313233343536373839 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.IO;
- namespace FastReport.Utils
- {
- internal static class FileUtils
- {
- public static string GetRelativePath(string absPath, string baseDirectoryPath)
- {
- char[] separators = { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar };
- baseDirectoryPath = Path.GetFullPath(baseDirectoryPath);
- absPath = Path.GetFullPath(absPath);
- baseDirectoryPath = baseDirectoryPath.TrimEnd(separators);
-
- string[] bPath = baseDirectoryPath.Split(separators);
- string[] aPath = absPath.Split(separators);
- int indx = 0;
- while (indx < Math.Min(bPath.Length, aPath.Length))
- {
- if (String.Compare(aPath[indx], bPath[indx], true) != 0)
- break;
- indx++;
- }
- // no matches, return absPath
- if (indx == 0)
- return absPath;
- string result = "";
- for (int i = indx; i < bPath.Length; i++)
- {
- result += ".." + Path.DirectorySeparatorChar;
- }
- result += String.Join(Path.DirectorySeparatorChar.ToString(), aPath, indx, aPath.Length - indx);
- return result;
- }
- }
- }
|