Originariamente inviato da LeleFT
Credo che sia perchè DIR è un comando interno, quindi non riesce a creare il processo, quindi il valore di p diventa nullo.

Prova così:
codice:
Runtime r = Runtime.getRuntime();
try {
   Process p = r.exec("CMD /C dir > lista.txt");
} catch (IOException x) {
   System.out.println("Errore di input output");
   System.out.println(x.getCause());
   System.out.println(x.getMessage());
   System.out.println(x.getStackTrace()); 
}
ho fatto così come hai detto e non dà nessun errore e non solleva alcuna eccezione, ma non và, non scrive nessun file lista.txt

------- EDIT -------
se però metto così:
codice:
Process p = r.exec("notepad");
mi apre notepad