о неет, какой ужас!
вы хотите сказать, что при каждом новом создании DataOutputStream файл открывается не на write, а на rewrite? 
и по-хорошему, надо указывать смещение, начиная с которого должна идти запись? 
получается, что он каждый раз стирал все пары значений, что были записаны в файлик до него :О
и, сначала Семен, а потом 1key, оказывались записанными в файлик первыми. Теперь понятно, почему он их не находил :)