Mega Code Archive

 
Categories / C# / File Stream
 

Compares two rooted paths for equality Any of the paths provided may end with path separator - it will be ignored

/*  * Filename:    FileUtil.cs  * Product:     Versioning Controlled Build  * Solution:    BuildAutoIncrement  * Project:     Shared  * Description: File utility methods.  * Copyright:   Julijan ?ribar, 2004-2007  *   * This software is provided 'as-is', without any express or implied  * warranty.  In no event will the author(s) be held liable for any damages  * arising from the use of this software.  *  * Permission is granted to anyone to use this software for any purpose,  * including commercial applications, and to alter it and redistribute it  * freely, subject to the following restrictions:  *  * 1. The origin of this software must not be misrepresented; you must not  *    claim that you wrote the original software. If you use this software  *    in a product, an acknowledgment in the product documentation would be  *    appreciated but is not required.  * 2. Altered source versions must be plainly marked as such, and must not be  *    misrepresented as being the original software.  * 3. This notice may not be removed or altered from any source distribution.  */ using System; using System.Diagnostics; using System.IO; using System.Text; using System.Text.RegularExpressions; namespace BuildAutoIncrement {     /// <summary>   /// A set of file utilities.   /// </summary>   public struct FileUtil {         /// <summary>         ///   Compares two rooted paths for equality. Any of the paths provided         ///   may end with path separator - it will be ignored.         /// </summary>         /// <param name="absolutePath1">         ///   First path.         /// </param>         /// <param name="absolutePath2">         ///   Second path.         /// </param>         /// <returns>         ///   <c>true</c> if both paths correspond to the same folder.         /// </returns>         public static bool PathsAreEqual(string absolutePath1, string absolutePath2) {             Debug.Assert(absolutePath1 != null && Path.IsPathRooted(absolutePath1));             Debug.Assert(absolutePath2 != null && Path.IsPathRooted(absolutePath2));             // remove any trailing separators             char endingChar = absolutePath1[absolutePath1.Length - 1];             if (endingChar == Path.DirectorySeparatorChar || endingChar == Path.AltDirectorySeparatorChar)                 absolutePath1 = Path.GetDirectoryName(absolutePath1);             else                 absolutePath1 = Path.GetFullPath(absolutePath1);             endingChar = absolutePath2[absolutePath2.Length - 1];             if (endingChar == Path.DirectorySeparatorChar || endingChar == Path.AltDirectorySeparatorChar)                 absolutePath2 = Path.GetDirectoryName(absolutePath2);             else                 absolutePath2 = Path.GetFullPath(absolutePath2);             return string.Compare(absolutePath1, absolutePath2, true) == 0;         }   } }