okhttp下载文件 Java下载文件 javaokhttp下载文件 下载文件 java下载 okhttp下载 okhttp

这篇具有很好参考价值的文章主要介绍了okhttp下载文件 Java下载文件 javaokhttp下载文件 下载文件 java下载 okhttp下载 okhttp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


示例 http客户端 用的是 okhttp,也可以用 UrlConnetcion或者apache

1、引入Maven

okhttp官网

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.14.9</version>
</dependency>

也可以下载 okhttp jar方式引入文章来源地址https://www.toymoban.com/news/detail-657309.html

1.1、okhttp发起请求官网Demo

public static final MediaType JSON = MediaType.get("application/json");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {
  RequestBody body = RequestBody.create(json, JSON);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  try (Response response = client.newCall(request).execute()) {
    return response.body().string();
  }
}

2、下载文件

public class TestDownload {

    public static void main(String args[]) {
       // 图片文件地址
        String url = "https://himg.bdimg.com/sys/portraitn/item/public.1.c9145b32.BtcNjpu-t6NEqWtWFh3ICg";
        
        // 创建一个 okhttp客户端线程池
        OkHttpClient client = new OkHttpClient.Builder()
                .connectionPool(new ConnectionPool(20, 2, TimeUnit.MINUTES))
                .build();
        
        // 构建请求对象
        Request request = new Request.Builder().url(url).get().build();
        
        // 发起请求得到请求结果
        Response response = client.newCall(request).execute();
        
        // 获取请求结果
        ResponseBody responseBody = response.body();
        if (null != responseBody) {
            // 获取文件后缀类型 可以使用 responseBody.contentType() 获取 ContentType,我这边知道这个url文件的类型
            String suffix = ".jpeg";
            
            // 创建一个文件
            String filename = "E:\\test\\" + System.currentTimeMillis() + suffix;
            
            File file = new File(filename);
    
            // 判断目录是否存在,不存在则创建目录
    
            File parent = new File(file.getParent());
            if(!parent.exists()){
                parent.mkdir();
            }
            
            // 判断文件是否存在, 不存在创建文件
            if (!file.exists()) {
                if (file.createNewFile()) {
                    // 获取请求结果输入流
                    InputStream rInputStream = responseBody.byteStream();
                    
                    // 创建读取字节流的byte数组
                    byte[] buffer = new byte[500];
                    
                    int areRead;
                    
                    // 创建文件输出流
                    FileOutputStream outputStream = new FileOutputStream(file );
                    
                    // 使用输入流读取字节,在输出到文件
                    while ((areRead = rInputStream.read(buffer)) != -1) {
                        outputStream.write(buffer, 0, areRead);
                    }
                    rInputStream.close();
                    outputStream.close();
                }
            }
        }
        response.close();
    }
}

3、扩充,读写 txt文件内容

3.1读写内容

    /**
     * 创建文件以及文件对应的目录
     * @param path 文件路径,例如 E:\test\测试.txt
     * @return {@link File}
     */
    private File createFile(String path) throws IOException {
        File file = new File(path);
        
        // 判断目录是否存在
        File parent = new File(file.getParent());
        if(!parent.exists()){
            parent.mkdir();
        }
        
        if(!file.exists()){
            file.createNewFile();
        }
        return file;
    }
    
    /**
     * 读取txt内容
     * @param file {@link File}
     * @return 字符串
     */
    private String readTxt(File file) throws IOException {
        
        StringBuilder sb = new StringBuilder();
        
        // 使用字符流读取
        BufferedReader reader = new BufferedReader(new FileReader(file));
        
        // 读取每一行的内容
        String readLine;
        
        while ((readLine = reader.readLine()) != null){
            sb.append(readLine);
        }
    
        String result = sb.toString();
        
        System.out.printf("读取内容: \n %s", result);
        
        reader.close();
        
        /*
        // 使用字节流读取
        long fileLength = file.length();
        
        // 创建一个用于读取指定字节大小的数组
        byte[] bytes = new byte[(int) fileLength];
        
        // 创建一个文件输入流
        FileInputStream fileInputStream = new FileInputStream(file);
        
        // 使用 文件输入流读取字节输入到 字节数组中
        int areRead = fileInputStream.read(bytes);
        
        String result2 = new String(bytes);

        fileInputStream.close();
   
         */
        return result;
    }
    
    @Test
    public void writeTxt() throws IOException {
        String path = "E:\\test2\\测试.txt";
        
        File file = createFile(path);
        
        // 读取现在已有的内容
        String readTxt = readTxt(file);
        
        // 创建一个文件输出流
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        
        // 之前的内容
        fileOutputStream.write(readTxt.getBytes(StandardCharsets.UTF_8));
    
        // 换行, 使用Java的自定义换行符号,会根据不同系统平台转义
        String newLine = System.getProperty("line.separator");
        fileOutputStream.write(newLine.getBytes());
        
        // 追加的内容
        fileOutputStream.write((String.valueOf(System.currentTimeMillis()) + " \r\n").getBytes(StandardCharsets.UTF_8));
        
        // 关闭资源
        fileOutputStream.flush();
        fileOutputStream.close();
    }

到了这里,关于okhttp下载文件 Java下载文件 javaokhttp下载文件 下载文件 java下载 okhttp下载 okhttp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java之okhttp3请求方式

    在java开发中,发起http请求是非常常见的需求,常用的有HttpClient,下面聊一下okhttp3的请求方式。 1、引入okhttp3依赖 2、提供springboot工程及http接口 3、http请求 4、请求结果 get请求 post请求 form表单请求 可见发起http请求还是挺方便的,感兴趣的小伙伴可以试试~~~///( v )~~~

    2024年02月13日
    浏览(39)
  • Java多线程文件下载器高文件下载速度

    在进行大文件下载时,使用多线程技术可以显著提高下载速度。本文将介绍如何使用多线程下载器来实现并行下载,以加快文件下载过程。 多线程下载器是一种利用多线程同时下载文件的工具。它将大文件分割成多个小块,并使用多个线程同时下载这些小块文件。随后,将下

    2024年02月11日
    浏览(38)
  • Java通过文件流和文件地址下载文件

    如何使用 MultipartFile 进行文件上传、下载到本地,并返回保存路径呢: 用于在 Spring Boot 应用中获取文件流,然后处理上传的文件,将文件保存到指定目录并返回保存的文件路径。下面对代码的各个部分进行简要介绍: 上传目录设置 :在这个示例中, UPLOAD_DIR 常量用于定义上

    2024年02月12日
    浏览(48)
  • Java下载excel模板文件

    最近做了一个导入Excel的功能,需求: 先提供一个下载Excel模板的功能。 用户下载好模板后,可以在模板文件当中填写要上传的内容,填写完过后再进行导入Excel,然后将用户填写的数据保存到数据库当中。 1.将模板放到resources目录下,尽量创建一个专门的文件夹来存放模板

    2024年02月15日
    浏览(56)
  • Java-基于okhttp请求SSE接口流式返回

    最近在开发跟大模型相关的业务,需要用java去请求大模型的对话接口并支持流式的返回,变用到了sse接口。首先介绍一下什么是SSE,SSE ( Server-sent Events )是 WebSocket 的一种轻量代替方案,使用 HTTP 协议。 严格地说,HTTP 协议是没有办法做服务器推送的,但是当服务器向客户

    2024年01月19日
    浏览(49)
  • 【Java实战】Feign调用文件下载服务接口实现文件下载功能

    最近需要实现Feign调用服务提供者的文件下载接口,进行文件下载功能,这里对功能的实现做一个简单的记录 通过调用服务提供者的文件下载接口,将文件传输的流数据通过 feign.Response 来接收,服务消费者再将数据转化 首先,在项目中引入Feign的依赖。你可以使用Maven进行管

    2024年02月12日
    浏览(80)
  • Java上传下载ftp文件

    在Java中连接FTP服务器可以使用Apache Commons Net库提供的FTPClient类。以下是一个简单的示例代码,演示如何连接到FTP服务器、进行文件上传和下载操作: 在上面的示例代码中,你需要替换以下信息: server :FTP服务器的主机名或IP地址。 port :FTP服务器的端口,默认为21。 userna

    2024年02月11日
    浏览(41)
  • java中excel文件下载

    1、System.getProperty(user.dir) 获取的是启动项目的容器位置 2、 Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING); StandardCopyOption.REPLACE_EXISTING 来忽略文件已经存在的异常,如果存在就去覆盖掉它 StandardCopyOption.COPY_ATTRIBUTES copy文件的属性,最近修改时间,最近

    2024年02月13日
    浏览(43)
  • java- SFTP文件上传下载

    ​ JSch是Java Secure Channel的缩写,是一个java实现的可以完成sftp上传下载的工具,我们可以集成它的功能到自己的应用程序,本文介绍使用JSch实现的SFTP上传下载的功能。 ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的方法,如 方法名 功能描述 put() 文件上传 get() 文件下载

    2024年01月19日
    浏览(56)
  • JAVA Http接口获取文件下载流,将下载的文件上传阿里云

     需要根据,业务数据,将存在第三方平台的数据,下载至本地,或转存阿里云OSS中。

    2024年02月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包