public static boolean fileCopy(String sourcePath, String targetPath)
    {
	if (fileExist(sourcePath))
	{
	    try
	    {
		File source = new File(sourcePath);
		File target = new File(targetPath);

		// overwrite existing file.
		if(fileExist(targetPath))
		    fileDelete(targetPath);

		// First try to create the target file's parent directory
		String targetParentDir = StringOps.getCanonicalPathToParent(targetPath);
		boolean targetParentDirCreated = dirCreateRecursive(targetParentDir);

		if(targetParentDirCreated)
		{
		    InputStream in = new FileInputStream(source);
		    OutputStream out = new FileOutputStream(target);

		    // Transfer bytes from in to out
		    byte[] buf = new byte[1024];
		    int len;

		    while ((len = in.read(buf)) >= 0) { out.write(buf, 0, len); }

		    in.close();       	
		    out.flush();
		    out.close();

		    return fileExist(targetPath);
		}
		else{ return false;}
	    }
	    catch (Exception e){ return false; }
	}
	else{ return false;}
    }