in reply to Path and File Name Maximum Lengths

Perhaps http://www.foken.de/alexander/projekte/windows/deepcopy.html and especially #Algorithm may help you.

Unfortunately the results from admittedly limited tests I have done do not seem to agree with what I have found on the internet.

Why doesn't that surprise me? MS has failed to define an upper limit for the length of an absolute filename in the past. Many API functions have some arbitary limits, typically 256 or 260 chars, some newer APIs accept even longer names. Usually, there are many different APIs for the same purpose, with different limits and different features, two or three levels of legacy APIs (dating back to Win95, WinNT 4, Win3.x, and even DOS), ANSI and Unicode variants, different APIs for drive letter paths and UNC paths, and so on. This ends in applications like the Windows Explorer not being able to access files with absolute names longer than 260 chars.

Lessons learned from that: If you can't avoid Windows, keep the paths short and without spaces, don't call API functions with more than 255 chars, but be prepared to get much longer paths back.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

Replies are listed 'Best First'.
Re^2: Path and File Name Maximum Lengths
by ikegami (Patriarch) on Jun 14, 2010 at 21:26 UTC

    MS has failed to define an upper limit for the length of an absolute filename in the past.

    MAX_PATH has been around for as long I can remember.

    Many API functions have some arbitary limits, typically 256 or 260 chars

    First you complain there's no limits, and then you call the limits arbitrary?

    Besides, the limit isn't arbitrary. 240 comes from history:

    Drive (C:\) + Dir (240) + 8.3 file name (12) + NUL = 256

    It has been expanded to allow a drive using the \\?\C:\ notation:

    Path (\\?\C:\ + 240 + 12) + NUL = 260.
      First you complain there's no limits, and then you call the limits arbitrary?

      Sorry, bad wording, I should have written "MS has failed to define a single, universal upper limit for the length of an absolute filename for all API functions in the past."

      MAX_PATH has been around for as long I can remember.

      And it does not say anything about the maximum length for an absolute filename any more. Even the 32767 chars limit is no real limit, according to http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx:

      Note The maximum path of 32,767 characters is approximate, because the "\\?\" prefix may be expanded to a longer string by the system at run time, and this expansion applies to the total length.

      And another quote:

      The shell and the file system have different requirements. It is possible to create a path with the Windows API that the shell user interface might not be able to interpret properly.

      And this is the point where the various file APIs really stink.

      Alexander

      --
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)