'Create a set of directories and files given a dict defining their
structure.
@param root: The directory in which to create the structure.  It must
already exist.
@type root: L{FilePath}
@param dirDict: The dict defining the structure. Keys should be strings
naming files, values should be strings describing file contents OR
dicts describing subdirectories.  All files are written in binary
mode.  Any string values are assumed to describe text files and
will have their newlines replaced with the platform-native newline
convention.  For example::
{"foofile": "foocontents",
"bardir": {"barfile": "bar
contents"}}
@type dirDict: C{dict}'

def createStructure(self, root, dirDict):

    for x in dirDict:
        child = root.child(x)
        if isinstance(dirDict[x], dict):
            child.createDirectory()
            self.createStructure(child, dirDict[x])
        else:
            child.setContent(dirDict[x].replace('\n', os.linesep).encode('utf-8'))
