What are the ways for Java to download files?
This article is about how Java downloads files. The editor thinks it is very practical, so share it with you as a reference and follow the editor to have a look.
1. Download as a stream
Public HttpServletResponse download (String path, HttpServletResponse response) {try {/ / path is the path of the file you want to download. File file = new File (path); / / get the file name. String filename = file.getName (); / / gets the suffix name of the file. String ext = filename.substring (filename.lastIndexOf (".") + 1) .toUpperCase (); / / download the file as a stream. InputStream fis = new BufferedInputStream (new FileInputStream (path)); byte [] buffer = new byte [fis.available ()]; fis.read (buffer); fis.close (); / / clear response response.reset (); / / set Header response.addHeader for response ("Content-Disposition", "attachment;filename=" + new String (filename.getBytes () Response.addHeader ("Content-Length", "" + file.length ()); OutputStream toClient = new BufferedOutputStream (response.getOutputStream ()); response.setContentType ("application/octet-stream"); toClient.write (buffer); toClient.flush (); toClient.close ();} catch (IOException ex) {ex.printStackTrace () } return response;}
two。 Download local files
Public void downloadLocal (HttpServletResponse response) throws FileNotFoundException {/ / download the local file String fileName = "Operator.doc" .toString (); / / default save name of the file / / read to the stream InputStream inStream = new FileInputStream ("c:/Operator.doc"); / / the storage path of the file / / sets the format of the output response.reset (); response.setContentType ("bin") Response.addHeader ("Content-Disposition", "attachment; filename=\"+ fileName +"\ "); / / Loop fetch the data in the stream byte [] b = new byte [100]; int len; try {while ((len = inStream.read (b)) > 0) response.getOutputStream (). Write (b, 0, len); inStream.close () } catch (IOException e) {e.printStackTrace ();}}
3. Download network files
Public void downloadNet (HttpServletResponse response) throws MalformedURLException {/ / download network files int bytesum = 0; int byteread = 0; URL url = new URL ("windine.blogdriver.com/logo.gif"); try {URLConnection conn = url.openConnection (); InputStream inStream = conn.getInputStream (); FileOutputStream fs = new FileOutputStream ("c:/abc.gif") Byte [] buffer = new byte [1204]; int length; while ((byteread = inStream.read (buffer))! =-1) {bytesum + = byteread; System.out.println (bytesum); fs.write (buffer, 0, byteread);} catch (FileNotFoundException e) {e.printStackTrace () } catch (IOException e) {e.printStackTrace ();}}
4. Support for opening online
Public void downLoad (String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {File f = new File (filePath); if (! f.exists ()) {response.sendError (404, "File not found!"); return;} BufferedInputStream br = new BufferedInputStream (new FileInputStream (f)); byte [] buf = new byte [1024]; int len = 0; response.reset () / / very important if (isOnLine) {/ / online opening method URL u = new URL ("file:///" + filePath); response.setContentType (u.openConnection (). GetContentType ()); response.setHeader (" Content-Disposition "," inline; filename= "+ f.getName ()) / / the file name should be encoded as UTF-8} else {/ / download-only response.setContentType ("application/x-msdownload"); response.setHeader ("Content-Disposition", "attachment; filename=" + f.getName ());} OutputStream out = response.getOutputStream () While ((len = br.read (buf)) > 0) out.write (buf, 0, len); br.close (); out.close ();} Thank you for reading! This is the end of this article on "what are the ways to download Java files?". I hope the above content can be of some help to you, so that you can learn more knowledge. if you think the article is good, you can share it for more people to see!