Erro java.lang.NullPointerException

Pessoal,

Estou precisando abrir um arquivo e fazer algo assim:
WAR$23699$Touchstone$Corea$Corea#

Eu iria eliminar o registro acima da minha TreeMap e no arquivo devo fazer isso aqui (no lugar onde está o registro acima):
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

substitui-lo por x’s.

O que fiz, quando manipulei já guardei onde todos os registros começaram no arquivo com o e o seu próprio tamanho,
Então o que fiz:

[code]
RandomAccessFile raf = new RandomAccessFile ( “dados.txt”, “rw” ) ;

      try  {
         
               Scanner sk;	     
               Writer out = new OutputStreamWriter ( new  FileOutputStream ( raf.getFD (  )  ) , "UTF-8" ); 
     int i=0;
     int n1=0;
     int n2=0;
     System.out.print("Confirme a chave a ser Editada: ");
     sk = new Scanner(System.in); 
     String leitura8 = sk.next();
     
     n1 = map.get(leitura8).getInicio();
     n2 = map.get(leitura8).getTamanho();
     
     
         raf.seek (n1+1); 
         while(n1<n2)
     {
	     out.write( "x " ) ;  
	     n1++;
	     
     }
     out.flush();
      }
 catch (FileNotFoundException ex) { 
	 ex.printStackTrace(); 
	 System.err.println(ex); 
 }
 catch (IOException ioe) {
		ioe.printStackTrace();
	}
     [/code]

onde então ele da os problemas.
os Campos getInicio e getTamanho, foi o que eu tinha tido, que são os campos onde guardei o inicio de todos os registros no arquivo e seu tamanho e com o seek eu iria até lá e substituiria tudo por x.

meu programa está todo em anexo, se alguém puder me da uma força:
O problema está na classe Indice,
da linha 229 até a linha 264.

Para testar o programa basta rodar a classe
TestePrograma.java

abraços e agradeço.
Jhonata Emerick