public static void move(File pSrc, File pDst, boolean pForce) throws IOException {

        // Check for invalid arguments
        if (pSrc == null || !pSrc.canRead()) {
            throw new IOException("FileHelper.ReadError" + (pSrc == null ? "" : pSrc.getAbsolutePath()));
        }

        if (pDst == null || !pDst.canWrite()) {
            throw new IOException("FileHelper.WriteError" + (pDst == null ? "" : pDst.getAbsolutePath()));
        }

        // Now really move the content
        if (pSrc.isFile()) {
            copyFile(pSrc, new File(pDst, pSrc.getName()), pForce);
            pSrc.delete();
        } else {

            File dstdir = new File(pDst, pSrc.getName());

            // if the new dir doesn't exists, then create it
            if (!dstdir.exists()) {
                dstdir.mkdir();
            }

            // copy each contained file
            File[] files = pSrc.listFiles();
            for (int i = 0; i < files.length; i++) {
                File filei = files[i];
                move(filei, dstdir, pForce);
                filei.delete();
            }

            pSrc.delete();
        }
    }