If this is so, why is the constructor not smart enough to add it to the filename every time it finds the slash is missing?
That's a good question. The main URL constructor
takes the whole string as an arguement. ie...... "http://www.vbworld.com/thread.html" but when using one of the alternate constructors that breaks up the string into pieces
the slashes from the protocol can be ommitted but the file has to start with a slash "/"

For instance URL u = new URL("http", "www.vbworld.com", /thread1.html")

I just think the reason that the file name must start with a slash is just so the the authority and the file path can be properly combined.