[DllImport("shlwapi.dll", CharSet = CharSet.Auto)]
static extern bool PathIsRelative([In] string lpszPath);
''' <summary>
''' Searches a path and determines if it is relative.
''' </summary>
''' <param name="pszPath">A pointer to a null-terminated string of maximum length MAX_PATH that contains the path to search.</param>
''' <returns>Returns TRUE if the path is relative, or FALSE if it is absolute.</returns>
<DllImport("shlwapi.dll", EntryPoint:="PathIsRelativeW", SetLastError:=True, CharSet:=CharSet.Unicode)> _
Public Function PathIsRelative(<MarshalAs(UnmanagedType.LPTStr)>pszPath As String) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
'THIS IS UNTESTED!!!
Private Declare Function PathIsRelative Lib "shlwapi" _
Alias "PathIsRelativeA" (ByVal pszPath As String) As Long
None.
The '''Path.IsPathRooted''' function works the same, but the return value is opposite.
It returns '''true''' for an absolute path, and '''false''' for a relative path.
None.
None
[DllImport("shlwapi.dll", CharSet = CharSet.Auto)] static extern bool PathIsRelative([In] string lpszPath);
public static bool IsRelativePath(string path)
{
return PathIsRelative(path);
}
//nunit test
[Test]
public void TestIsRelative()
{
Assert.AreEqual(true,IO.IsRelativePath(@"test.txt"),"Test 1");
Assert.AreEqual(true, IO.IsRelativePath(@"..\test.txt"), "Test 2");
Assert.AreEqual(true, IO.IsRelativePath(@"..\..\test.txt"), "Test 3");
Assert.AreEqual(false, IO.IsRelativePath(@"C:\test.txt"), "Test 4");
}
<DllImport("shlwapi.dll", EntryPoint:="PathIsRelativeW", SetLastError:=True, CharSet:=CharSet.Unicode)> _
Public Function PathIsRelative(<MarshalAs(UnmanagedType.LPTStr)>pszPath As String) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
Public Shared Function IsRelativePath(path As String) As Boolean
Return PathIsRelative(path)
End Function
'nunit test
<Test> _
Public Sub TestIsRelative()
Assert.AreEqual(true,IsRelativePath("test.txt"),"Test 1")
Assert.AreEqual(true, IsRelativePath("..\test.txt"), "Test 2")
Assert.AreEqual(true, IsRelativePath("..\..\test.txt"), "Test 3")
Assert.AreEqual(false, IsRelativePath("C:\test.txt"), "Test 4")
End Sub