The FileListCrawler takes a root directory and a list of relative file paths and "crawls" that list as if it were a directory crawler. If the root is specified as, e.g. "X:" on a Windows system, the call to substring on root's absolute path and the subtraction of one character is incorrect.
With a root of X: and a relative file of "dir1/dir2/file.doc", the output file is: "X:/ir/dir2/file.doc.txt"
Let's get rid of the substring calculations and move to Java 7!