On Sat, Mar 6, 2010 at 12:21 AM, Richard Carde <[email protected]> wrote: <snip> > > If I specify the path (first argument) as a drive letter (of a mapped drive) > only, and that drive has a current working directory other than the root, it > fails because GetFiles() returns an absolute path which is incorrect - it > prepends the filenames with a \. > > eg: > > H:\>CD Z:\data_to_process > > H:\>GetFilesTest.exe Z: > > Processing file Z:\file1.txt > > Processing file Z:\file2.txt > > ... > > This isn't correct. While it correctly enumerates the files within the > folder structure as specified, the path should be Z:file1.txt, etc. Surely?
I agree (and can confirm with DotLisp and .NET 2.0) and I think you've found a bug. Note that files in the "current" folder don't have the \ insterted. That is your example above is wrong, at least for me: T:windows-gcl-saved_acl2.zip.txt T:\lu\README.TXT The above is a sample of the output from (Directory:GetFiles "T:" "*.log" System.IO.SearchOption:AllDirectories) > Tried with VS2008 & .Net 3.5 as well as VS2010 RC & .Net 4 - same behaviour. I think I can see the problem using Reflector in Directory.InternalGetFileDirectoryNames: Where it says: If (data.userPath.Length > 0) Then ch = data.userPath.Chars((data.userPath.Length - 1)) flag2 = ((ch = Path.DirectorySeparatorChar) OrElse (ch = Path.AltDirectorySeparatorChar)) End If I believe it should be flag2 = ((ch = Path.DirectorySeparatorChar) OrElse (ch = Path.AltDirectorySeparatorChar) OrElse (ch = Path.VolumeSeparatorChar)) But InternalGetFileDirectoryNames is quite complex... <snip> > -- > Richard Carde > -- Regards, Mark Hurd, B.Sc.(Ma.)(Hons.)
