E' sbagliata la condizione del while:

codice:
while((bytesRead = is.read(buf)) != -1) {
O, meglio

codice:
while((bytesRead = is.read(buf)) >= 0) {
Poi, io ti suggerisco di non costruire i percorsi usando i backshash, ma di affidarti al valore restituito da File.separator (o File.separatorChar), così da rendere il codice cross-platform.

codice:
File f = new File(pathApp + File.separator + user + File.separator + FileName);
Ciao.