Hola:
Si lo haces desde java, la barra / funciona bien siempre, independientemente de que sea linux o windows. En cualquier caso, File.separator te da el correcto para el sistema operativo en el que estés.
El directorio del usuario (tanto windows como linux), lo puedes obtener con System.getProperty("user.home") y es posiblemente la mejor opción.
Lo de saber si es C u otra unidad.... ya estás siendo específico de windows, linux no tiene visibles las unidades. La clase FileSystemView puede ayudarte con estos temas
http://docs.oracle.com/javase/1.5.0/...ystemView.html . Tendrías que ir haciendo código para "interrogar" al sistema si tiene unidad C, si no la tiene, etc, etc.
Se bueno.