Creates a relative path from one file or folder to another. : Path « File Stream « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Date Time
8.Design Patterns
9.Development Class
10.Event
11.File Stream
12.Generics
13.GUI Windows Form
14.Internationalization I18N
15.Language Basics
16.LINQ
17.Network
18.Office
19.Reflection
20.Regular Expressions
21.Security
22.Services Event
23.Thread
24.Web Services
25.Windows
26.Windows Presentation Foundation
27.XML
28.XML LINQ
C# Book
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source
C# / C Sharp » File Stream » PathScreenshots 
Creates a relative path from one file or folder to another.
     

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections.Specialized;

namespace Genuilder.Extensibility
{
  public class PathUtil
  {
    /// <summary>
    /// Creates a relative path from one file
    /// or folder to another.
    /// </summary>
    /// <param name="fromDirectory">
    /// Contains the directory that defines the
    /// start of the relative path.
    /// </param>
    /// <param name="toPath">
    /// Contains the path that defines the
    /// endpoint of the relative path.
    /// </param>
    /// <returns>
    /// The relative path from the start
    /// directory to the end path.
    /// </returns>
    /// <exception cref="ArgumentNullException"></exception>
    public static string RelativePathTo(
      string fromDirectory, string toPath)
    {
      if(fromDirectory == null)
        throw new ArgumentNullException("fromDirectory");

      if(toPath == null)
        throw new ArgumentNullException("toPath");

      bool isRooted = Path.IsPathRooted(fromDirectory)
        && Path.IsPathRooted(toPath);

      if(isRooted)
      {
        bool isDifferentRoot = string.Compare(
          Path.GetPathRoot(fromDirectory),
          Path.GetPathRoot(toPath)true!= 0;

        if(isDifferentRoot)
          return toPath;
      }

      StringCollection relativePath = new StringCollection();
      string[] fromDirectories = fromDirectory.Split(
        Path.DirectorySeparatorChar);

      string[] toDirectories = toPath.Split(
        Path.DirectorySeparatorChar);

      int length = Math.Min(
        fromDirectories.Length,
        toDirectories.Length);

      int lastCommonRoot = -1;

      // find common root
      for(int x = 0; x < length; x++)
      {
        if(string.Compare(fromDirectories[x],
          toDirectories[x]true!= 0)
          break;

        lastCommonRoot = x;
      }
      if(lastCommonRoot == -1)
        return toPath;

      // add relative folders in from path
      for(int x = lastCommonRoot + 1; x < fromDirectories.Length; x++)
        if(fromDirectories[x].Length > 0)
          relativePath.Add("..");

      // add to folders to path
      for(int x = lastCommonRoot + 1; x < toDirectories.Length; x++)
        relativePath.Add(toDirectories[x]);

      // create relative path
      string[] relativeParts = new string[relativePath.Count];
      relativePath.CopyTo(relativeParts, 0);

      string newPath = string.Join(
        Path.DirectorySeparatorChar.ToString(),
        relativeParts);

      return newPath;
    }

  }
}

   
    
    
    
    
  
Related examples in the same category
1.Paths in C#
2.Path.GetTempFileName
3.Use static methods in Path
4.Resolve Path
5.Map Path
6.File Path Collection
7.Directory listing
8.Gets a list of files
9.Get Relative Path
10.Make Absolute Path
11.Combines two path strings.
12.Split the path into array of string
13.Get Application Relative Path
14.Performs operations on String instances that contain file or directory path information.
15.Get temp path
16.Get full path
17.Get temp file name
18.Combines two strings into a path.
19.Combines three strings into a path.
20.Combines four strings into a path.
21.Combines an array of strings into a path.
22.Get a list of invalid path characters.
23.Get a list of invalid file characters.
24.creates a relative path to "targetFile" that is relative to "path"
25.Copies the specified resource to a temporary file and returns its path.
26.Is valid path name
27.Get Application Path
28.Calculate Relative Path
29.Combine paths
30.Gets the path of the current request relative to the application base path.
31.Redirects to a path relative to the application base path.
32.Gets the relative path from a source to a target path.
33.Gets the common root path of the given path list.
34.Relative Paths
35.Checks if path provided corresponds to a directory.
36.Compares two rooted paths for equality. Any of the paths provided may end with path separator - it will be ignored.
37.Combines two paths, removing root-folder combinations.
38.Combine base Path and relative Path
39.Get Execution Path
40.Get relative path (2)
41.Formats the path.
42.Gets the relative path.
43.Checks a directory path and returns a normalized form with trailing
44.Returns the path argument adjusted to be relative to the base path. Absolute path names will be returned unchanged.
java2s.com  |  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.