Yes, that's exactly what I mean. The code looks much better with HarEntry.
Another thing I just noticed in your path is that you are calling checkSpace inside relPathToRoot() and outside it on writeTopLevelDirs().
I think it is better to check for spaces outside relPathToRoot() since checking for spaces is something that we would like to do in the beginning of the execution only (and relPathToRoot() is an auxiliary function we might want to use several times throughout the execution).
If you agree with that, you can just remove checkSpace from inside relPathToRoot() and place it also after the relPathToRoot() call on method archive().
If you prefer to leave the checkSpace() call inside relPathToRoot(), then you can probably remove the checkSpace(relPath) call on writeTopLevelDirs().