Строка
new File(""+dir+"\""+hash+".txt");
создает файл с именем crawl_html"the_hash.txt
, поскольку \"
внутри литерала String используется для представления символа двойной кавычки, а не обратной косой черты.\\
должен использоваться для представления обратной косой черты.
Использовать конструктор файла, принимая File (каталог) в качестве первого аргумента и имя файла в качестве второго аргумента:
new File(dir, hash + ".txt");