rv = dirEntry->CopyTo(destDir, EmptyString());
rv = dirEntry->CopyTo(destDir, nsString());
nsresult RecursiveCopy(nsIFile* srcDir, nsIFile* destDir){  nsresult rv;  PRBool isDir;    rv = srcDir->IsDirectory(&isDir);  if (NS_FAILED(rv)) return rv;  if (!isDir) return NS_ERROR_INVALID_ARG;    PRBool exists;  rv = destDir->Exists(&exists);  if (NS_SUCCEEDED(rv) && !exists)    rv = destDir->Create(nsIFile::DIRECTORY_TYPE, 0775);  if (NS_FAILED(rv)) return rv;    PRBool hasMore = PR_FALSE;  nsCOMPtr<nsISimpleEnumerator> dirIterator;  rv = srcDir->GetDirectoryEntries(getter_AddRefs(dirIterator));  if (NS_FAILED(rv)) return rv;    rv = dirIterator->HasMoreElements(&hasMore);  if (NS_FAILED(rv)) return rv;    nsCOMPtr<nsIFile> dirEntry;    while (hasMore)  {    rv = dirIterator->GetNext((nsISupports**)getter_AddRefs(dirEntry));    if (NS_SUCCEEDED(rv))    {      rv = dirEntry->IsDirectory(&isDir);      if (NS_SUCCEEDED(rv))      {        if (isDir)        {          nsCOMPtr<nsIFile> destClone;          rv = destDir->Clone(getter_AddRefs(destClone));          if (NS_SUCCEEDED(rv))          {            nsCOMPtr<nsILocalFile> newChild(do_QueryInterface(destClone));            nsAutoString leafName;            dirEntry->GetLeafName(leafName);            newChild->AppendRelativePath(leafName);            rv = newChild->Exists(&exists);            if (NS_SUCCEEDED(rv) && !exists)              rv = newChild->Create(nsIFile::DIRECTORY_TYPE, 0775);            rv = RecursiveCopy(dirEntry, newChild);          }        }        else          rv = dirEntry->CopyTo(destDir, EmptyString());      }          }    rv = dirIterator->HasMoreElements(&hasMore);    if (NS_FAILED(rv)) return rv;  }    return rv;}