I just ended a several day exploration of the FullName Property of the System.IO.FileInfo class in .NET. When the FullName exceeds in length a certain pre-determined number of characters, the Property throws an Exception. There are rules, you know. And limitations. Funny thing is, it is possible to create a file whose name exceeds the limit. And said creation does NOT cause any grief at all. The boobytrap waits around until an innocent user traverses a major subtree, using GetDirectories() in System.IO.DirectoryInfo (similar for files), and stumbles over the illicit item. Seems a little crazy to permit a user to create a file whose name is illicit. But what do I know?
Also, this arbitrary and capricious character limit obviously came about to cater to the needs of C language programmers who would routinely declare a static, one dimension array of characters to contain just about any fully-qualified filename that you are likely to encounter. Just so Mister C Programmer could aim at something, a limit was established. That was well before the advent of the native string class, which is far more natural to code with than arrays of characters that terminate in a NUL character.