se estiver usando uma aplicação web...
Eu uso este comando.... mas da uma estudada nele (FileInputStream(file) e BufferedInputStream):
Chamo na servlet...
response.setHeader("Content-Disposition", "filename=" + arq.getName());
response.setContentType("application/vnd.ms-excel");
ServletOutputStream out;
out = response.getOutputStream();
FileInputStream fin = new FileInputStream(arq);
BufferedInputStream bin = new BufferedInputStream(fin);
BufferedOutputStream bout = new BufferedOutputStream(out);
int ch =0;
while((ch=bin.read())!=-1)
{
bout.write(ch);
}
bin.close();
fin.close();
bout.close();
out.close();
arq.delete();
}