I want to copy world files to a different directory but I don't want it to freeze the main thread if the world files are too big. So I want to know if there is a good way to copy the files to a new directory. Async task can't run for more than a few seconds and hence they're not an option. Is there a way to start a new thread and let the files be copied in that thread?
It's OK to use AsyncTask. "A few seconds" is just an approximate way of saying it. The mechanism of copying worlds is exactly what AsyncTask is designed for.
Also note that if your world is extracted from a zip archive of compression level 0 (no compression, archive only), or a .tar file (without .gz), it may or may not be faster than copying files from another directory, since there is no need to list directories and open many file streams (just one).