Java下载文件的方式有以下几种:
- 使用URL类进行文件下载:可以使用java.net.URL类打开输入流并读取文件内容,然后使用输出流保存文件。
URL url = new URL(fileUrl); InputStream in = url.openStream(); OutputStream out = new FileOutputStream(savePath); byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } in.close(); out.close();
- 使用Apache HttpClient库进行文件下载:Apache HttpClient库提供了更为方便的方法来处理HTTP请求和响应,其中包括文件下载功能。
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(fileUrl); CloseableHttpResponse response = httpClient.execute(httpGet); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream in = entity.getContent(); OutputStream out = new FileOutputStream(savePath); byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } in.close(); out.close(); } response.close(); httpClient.close();
- 使用Java NIO进行文件下载:Java NIO(New IO)提供了更高级的IO操作功能,可以使用FileChannel和ByteBuffer来进行文件下载。
ReadableByteChannel inChannel = Channels.newChannel(new URL(fileUrl).openStream()); FileOutputStream out = new FileOutputStream(savePath); FileChannel outChannel = out.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(4096); while (inChannel.read(buffer) != -1) { buffer.flip(); outChannel.write(buffer); buffer.clear(); } inChannel.close(); outChannel.close(); out.close();
以上是几种常见的Java下载文件的方式,可以根据具体的需求选择合适的方法。