public static void moveFile(File source, File dest){

        StringBuilder debugMessage = new StringBuilder(64);
        debugMessage.append("Unable to move:\n");
        debugMessage.append(source.getPath());
        debugMessage.append("\nto:\n");
        debugMessage.append(dest.getPath());
        debugMessage.append("\n\n");

        // Make the parent folder
        File destParent = dest.getParentFile();

        if(destParent != null && ! destParent.exists() ){
            if( ! destParent.mkdirs() )
                debugMessage.append("Parent directory failed to create.\n");
        }

        // Try to rename the file
        if( ! source.renameTo(dest) ){

            // Rename failed, attempt to manually copy
            try {
                if( ! dest.exists() )
                    dest.createNewFile();

                FileChannel sourceChan = new FileInputStream(source).getChannel();
                FileChannel destination = new FileOutputStream(dest).getChannel();

                long count =0;
                long size = sourceChan.size();
                while( count < size ){
                    count += destination.transferFrom(sourceChan, 0, size-count);
                }

                sourceChan.close();
                destination.close();

                if( size == count)
                    source.delete();
                else
                    Main.handleException(
                            debugMessage.append("All of the file failed to copy for an unkown reason.\nOrginal File Size: ")
                            .append(size).append("  New File Size: ").append(count).toString(),
                            null, Main.WARN_LEVEL);

            } catch(IOException ioe){
                Main.handleException(debugMessage
                        .append("Rename and copy failed.").toString(),
                        ioe, Main.WARN_LEVEL);
            }
        }
    }