java通过url下载文件并输出的方法

yizhihongxing

以下是完整攻略,包含代码和说明:

通过URL下载文件并输出的方法

基本思路

下载文件的基本思路是,通过URL获取文件的输入流,然后将输入流写入输出流,最终将输出流写入文件中。在Java中,可以利用URLConnection类和BufferedInputStream/BuffferedOutputStream类来实现该过程。

示例1

以下是一个通过URL下载文件并保存的示例代码:

import java.io.*;
import java.net.*;

public class DownloadFile {
    public static void main(String[] args) {
        String fileURL = "https://example.com/file.pdf";  // 要下载的文件的URL
        String saveDir = "/Users/user/Downloads";  // 文件保存的目录

        try {
            URL url = new URL(fileURL);  // 创建URL对象
            HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();  // 打开连接
            int responseCode = httpConn.getResponseCode();  // 获取响应码

            // 判断是否请求成功
            if (responseCode == HttpURLConnection.HTTP_OK) {
                // 获取连接中的输入流
                InputStream inputStream = httpConn.getInputStream();
                String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1); // 获取文件名
                String filePath = saveDir + "/" + fileName;  // 拼接文件路径

                // 创建输出流
                OutputStream outputStream = new FileOutputStream(filePath);

                // 创建缓存输入输出流
                byte[] buffer = new byte[4096];
                int bytesRead = -1;
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, bytesRead);
                }

                // 关闭输入流、输出流、连接
                outputStream.close();
                inputStream.close();
                httpConn.disconnect();

                System.out.println("File download complete");
            } else {
                System.out.println("No file to download. Server replied HTTP code: " + responseCode);
            }
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

该示例通过URL连接到指定的文件,并将文件保存在指定的目录中。如果请求成功,会输出"File download complete"。

示例2

以下是一个通过URL下载图片并展示的示例代码:

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.*;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class DownloadImage {
    public static void main(String[] args) {
        String imageUrl = "https://example.com/image.jpg";  // 要下载的图片的URL

        try {
            URL url = new URL(imageUrl);  // 创建URL对象
            HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();  // 打开连接
            int responseCode = httpConn.getResponseCode();  // 获取响应码

            // 判断是否请求成功
            if (responseCode == HttpURLConnection.HTTP_OK) {
                // 获取连接中的输入流
                InputStream inputStream = httpConn.getInputStream();

                // 将输入流转为BufferedImage对象
                BufferedImage image = ImageIO.read(inputStream);

                // 关闭输入流、连接
                inputStream.close();
                httpConn.disconnect();

                // 创建JFrame和JLabel
                JFrame frame = new JFrame();
                JLabel label = new JLabel(new ImageIcon(image));

                // 设置JFrame的相关属性
                frame.setSize(500, 500);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.getContentPane().add(label);
                frame.setVisible(true);
            } else {
                System.out.println("No image to download. Server replied HTTP code: " + responseCode);
            }
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

该示例通过URL连接到指定的图片,并展示在JFrame上。如果请求成功,会展示图片。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java通过url下载文件并输出的方法 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 30分钟入门Java8之lambda表达式学习

    下面是关于“30分钟入门Java8之lambda表达式学习”的完整攻略: 什么是lambda表达式 Lambda表达式是Java8中引入的一种新的语法,它可以替代匿名内部类的写法,在某些场景下可以让代码更简洁、更易懂,并且可以提升代码的可读性和可维护性。 lambda表达式的语法 Lambda表达式的基本语法如下: (parameters) -> ex…

    Java 2023年5月26日
    00
  • 在Eclipse中在线安装Emmet和图文使用教程

    下面是在Eclipse中在线安装Emmet和图文使用教程的完整攻略: 在Eclipse中在线安装Emmet 打开Eclipse,点击菜单栏的“Help” -> “Eclipse Marketplace”; 在弹出的窗口搜索框中,输入“Emmet”,然后点击搜索按钮; 在搜索结果中,找到“Emmet – The Essential Toolkit for…

    Java 2023年6月15日
    00
  • 一文掌握Spring Boot 日志文件

    一文掌握 Spring Boot 日志文件 在 Spring Boot 应用中,日志文件是非常重要的一部分,它可以帮助我们实时监控应用运行过程中发生的错误和异常,同时也便于开发人员分析问题并进行调试。本文将分享如何使用 Spring Boot 内置的日志框架 Logback 来配置日志文件。 添加 Logback 依赖 首先,在项目的 pom.xml 文件中…

    Java 2023年5月19日
    00
  • SpringBoot整合MybatisPlus的教程详解

    SpringBoot整合MybatisPlus的教程详解 本篇文章将介绍SpringBoot如何整合MybatisPlus,并给出两个示例供参考。 简介 SpringBoot是一个快速构建Spring应用程序的框架,整合了大量常用的第三方库。MybatisPlus是基于Mybatis的增强工具,简化了在Mybatis中的开发流程。 准备工作 在开始前,请确保…

    Java 2023年5月19日
    00
  • Spring Security 过滤器注册脉络梳理

    下面是Spring Security 过滤器注册脉络梳理的完整攻略。 Spring Security 过滤器注册脉络梳理 在Spring Security中,过滤器的注册是非常重要的一项工作,它决定了Spring Security能否对请求进行拦截,并进行相应的安全控制。 过滤器链 Spring Security 采用了一条链式过滤器来完成安全控制,它是由一…

    Java 2023年5月20日
    00
  • Java中如何将json字符串转换成map/list

    将JSON字符串转换为Map/List是Java编程中非常常见的操作,可以使用第三方库如Jackson、Gson和Fastjson等来实现。以下是使用Jackson和Fastjson两种库实现的示例说明: 使用Jackson库实现 首先,需要在pom.xml中添加Jackson库的依赖: xml <dependency> <groupId&…

    Java 2023年5月26日
    00
  • Apache Hudi结合Flink的亿级数据入湖实践解析

    下面我来详细讲解一下Apache Hudi结合Flink的亿级数据入湖实践解析的完整攻略。 概述 本文主要介绍如何使用Apache Hudi和Flink实现亿级数据的入湖操作。Hudi是一个可靠的增量数据处理框架,适用于在Apache Spark等大数据处理框架上进行大数据增量计算。而Flink则是一个分布式流处理框架,具有高吞吐量和低延迟的特点。将两者结合…

    Java 2023年5月20日
    00
  • hibernate关于session的关闭实例解析

    关于“hibernate关于session的关闭实例解析”的完整攻略,我会从以下几个方面进行详细讲解: 什么是Hibernate Session Session关闭的几种方式 Session关闭的示例讲解 1. 什么是Hibernate Session 在Hibernate中,Session是一个非常重要的概念,它代表着Java程序和数据库之间的一次会话。在…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部