首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从MediaHttpDownloader获取内容长度(也就是文件大小)?驱动器file.getSize()始终返回null

MediaHttpDownloader是Google提供的一个用于从Google Drive下载媒体文件的API工具。要从MediaHttpDownloader获取内容长度(文件大小),可以使用以下方法:

  1. 首先,确保已经通过MediaHttpDownloader的setProgressListener方法设置了ProgressListener监听器,该监听器会在下载进度发生变化时被调用。
  2. 然后,在下载之前调用MediaHttpDownloader的download方法。在下载过程中,会调用ProgressListener的progressChanged方法。
  3. 在progressChanged方法中,可以通过getMediaContentLength方法获取内容长度。该方法返回一个long类型的值,表示文件的总大小(字节)。

以下是一个示例代码,演示如何使用MediaHttpDownloader获取文件大小:

代码语言:txt
复制
import com.google.api.client.googleapis.media.MediaHttpDownloader;
import com.google.api.client.googleapis.media.MediaHttpDownloaderProgressListener;

import java.io.IOException;

public class DownloadExample {
    public static void main(String[] args) {
        String fileId = "your_file_id";
        MediaHttpDownloader downloader = new MediaHttpDownloader.Builder(...)
                .setProgressListener(new CustomProgressListener())
                .build();

        try {
            downloader.download(new File("destination_file"), DriveService.files().get(fileId).executeMedia());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static class CustomProgressListener implements MediaHttpDownloaderProgressListener {
        @Override
        public void progressChanged(MediaHttpDownloader downloader) throws IOException {
            long contentLength = downloader.getMediaContentLength();
            System.out.println("Content Length: " + contentLength + " bytes");
        }
    }
}

请注意,示例代码中的"your_file_id"应替换为您要下载的文件的实际文件ID。另外,您还需要根据您的项目配置正确地构建MediaHttpDownloader对象。

对于推荐的腾讯云相关产品和产品介绍链接地址,由于本回答要求不提及特定品牌商,无法提供直接的链接地址。您可以自行通过搜索引擎或访问腾讯云官方网站查找与云计算、存储相关的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android FTP 多线程断点续传下载上传的实例

但是FTP协议提供了一个更好用的命令REST用于指定位置恢复任务,同时FTP协议提供了一个命令SIZE用于获取下载的文件大小,有了这两个命令,FTP断点续传也就没有什么问题。...先获取文件大小,然后根据线程数,对整个文件进行分段下载,在任务停止时,记录每一条线程的暂停位置,重新开始下载,每一条线程读取对应的下载记录,然后每一线程指定位置开始下载。 ?...客户端可以通过client.listFiles(remotePath)获取FTP服务器上该路径的文件列表。 如果路径是文件,只会返回一个长度为1的数组。...,如果记录不存在,则重新开始下载 FTP 分段线程区间自动停止 由于FTP协议没有区间下载的原因,为了让线程只下载特定区间的内容,需要客户端在单条线程累计读的数据长度已经超过了所分配的区间长度的时候,停止该条线程...以上就是本文的全部内容,希望对大家的学习有所帮助。

1.9K31
  • 搭建一个属于自己的图床

    如果图片保存到本地,当我们需要在互联网和别人分享自己创作的内容时,图片是无法显示的,而第三方图床基本上都是收费的。 本文就将跟大家分享下如何搭建一个属于自己的图床,欢迎各位感兴趣的开发者阅读本文。...获取资源所需配置 接下来,我们继续看下其他标注的作用: 标注5的值为上传成功后,接口所返回的文件路径地址。...例如返回{path:"/uploads/20199afrj.png"},我们需要取出path的值,这里就需要写["path"],层级深的话则需要继续向数组中追加元素,详情请移步:URL 获取规则 标注6...[{}]", fileType); log.info("[文件名称] - [{}]", file.getOriginalFilename()); log.info("[文件大小...= null; // 生成文件名 String finalFileName = UUIDUtil.getUUID()+fileName.substring(fileName.lastIndexOf

    80331

    spring boot 下载excel文件提示“文件中部分内容有问题。是否让我们尽量尝试恢复

    问题二方案: 项目打包后, 利用解压工具找到该文件(该步骤可以验证问题一....文件的Content-Length其实可以返回流中直接获取,并不需要用户主动去设置. 这里的问题核心应该是思考:为什么下载的文件和元素文件的大小会不一致?...下面2个获取inputStream的长度的API,只有在读取磁盘上具体文件中才比较适用.如果是jar包中的文件,是获取不到大小的 //加上设置大小 response.addHeader("Content-Length...; } outputStream.flush(); 出现该问题的原因就是buff.length,数组声明后长度就是固定的,而不是获取里面读取的内容的字节长度,所以导致这里的buff.length...的值始终是1024.

    2.1K41

    Java IO详解(一)------File 类

    注意:File 类只能操作文件的属性,文件的内容是不能操作的。 1、File 类的字段   我们知道,各个平台之间的路径分隔符是不一样的。   ①、对于UNIX平台,绝对路径名的前缀始终为"/" 。...true 存在返回false     2.boolean mkdir() 创建目录,如果上一级目录不存在,则会创建失败     3.boolean mkdirs() 创建多级目录,如果上一级目录不存在会自动创建...getAbsolutePath() 返回此抽象路径名的绝对形式     4.String getParent()//如果没有父目录返回null     5.long lastModified()//获取最后一次修改的时间...    6.long length() 返回由此抽象路径名表示的文件的长度。     ...System.out.println(file.getName()); //a.txt //返回此抽象路径名的父null的路径名字符串,如果此路径名未命名为父目录,则返回null

    91290

    基于SpringWeb MultipartFile文件上传、下载功能

    MultipartFile可以代表一个多部分文件上传请求中的一个文件,提供了一系列方法用于获取文件的各种属性和内容,使得在后端处理文件上传变得十分方便。...通过获取文件的原始文件名、内容类型、大小等属性,我们可以实现对图片文件的有效管理和存储。例如,我们可以将图片文件保存到服务器的文件系统中,或者将其存储到云存储服务中。 2....在服务器端,我们可以将文件作为MultipartFile对象进行处理,并通过设置响应头信息,将文件作为下载内容返回给客户端。客户端接收到文件后,可以将其保存到本地磁盘或进行其他处理。 3....首先,我们可以通过MultipartFile接口获取上传的文件对象,然后对其进行相应的编辑操作。例如,我们可以修改文件的名称、修改文件的内容等。...fileName; String suffix = FilenameUtils.getExtension(originalFilename); long size = file.getSize

    16800

    SpringBoot学习笔记(十一:使用MongoDB存储文件 )

    Java中文件和二进制转换比较简单: 文件转换为byte数组 public static byte[] fileToByte(File file) throws IOException{ byte...GridFS制定大文件在数据库中如何处理,通过开发语言驱动来完成、通过API接口来存储检索大文件。 2.1、GridFS存储原理 GridFS使用两个集合(collection)存储文件。...fs.files集合中文档的存储内容 ? fs.chunks 集合存储文件文件内容的二进制数据,以类json格式文档形式存储。...获取文件 GridFS文件系统中下载一个文件到本地:mongofiles -d 数据库名字 -l "将文件保存在本地的完整路径名" get "GridFS文件系统中的文件名" ,如果不写-l以及后面的路径参数...创建一个容器,传入一个`MongoDatabase`类实例db GridFSBucket bucket = GridFSBuckets.create(mongoDatabase()); // 获取内容

    3.3K41

    vci驱动安装_deviceiocontrol函数

    1.获取所有的驱动器 利用函数 GetLogicalDriveStrings The GetLogicalDriveStrings function fills a buffer with strings...C:/,D:/那样的字符窜 2.获取驱动器类型 现在获得了驱动器的路径了,如C:/,D:/ 那么如何区分他们呢, 有这个函数 GetDriveType The GetDriveType function...,虽然写的是DRIVE_CDROM 但是dvd 光驱能获得(这不废话吗),另外,虚拟光驱能获得,比如俺机器上安装了Alcohol 120%,设置的虚拟光驱获得了 4.区分软驱和U盘 先把代码贴出来吧...这里有以下小小的变化,如果路径是选择的是驱动器,那么这个路径的格式是要 //./DeviceName 比如 //....如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    45930

    (61) 内存映射文件及其应用 - 实现一个简单的消息队列 计算机程序的思维逻辑

    这种按需加载的方式,使得内存映射文件可以方便处理非常大的文件,内存放不下整个文件不要紧,操作系统会自动进行处理,将需要的内容读到内存,将修改的内容保存到硬盘,将不再使用的内存释放。...ByteBuffer可以简单理解为就是封装了一个字节数组,这个字节数组的长度是不可变的,在内存映射文件中,这个长度由map方法中的参数size决定。...public final Buffer position(int newPosition) ByteBuffer中有很多基于当前位置读写数据的方法,如: //当前位置获取一个字节 public abstract...BasicQueue的队列长度是有限的,如果满了,调用enqueue会抛出异常,消息的最大长度也是有限的,不能超过1020,如果超了,会抛出异常。如果队列为空,dequeue返回null。...在.data文件中使用固定长度存储每条信息,长度为1024,前4个字节为实际长度,后面是实际内容,每条消息的最大长度不能超过1020。

    1.2K50

    SpringMVC 解毒5

    2.3.1节讲到 initMultipartResolver() 方法会尝试web应用上下文中获取beanName为multipartResolver的MultipartResolver实现类。...7.2.1 CommonsMultipartResolver 初始化分析 由于这个类比较复杂,我们还是初始化说起,看看它都会做哪些事情。...需要清除的是键文件,而在 7.2.2 节讲第四个属性setMaxInMemorySize方法时,提到过,如果文件大小超过指定字节数,会被写到临时文件目录中,所以这里做的就是清除临时目录文件。...--${sub_bound}-- --${bound}-- 所以解析multipart请求就是根据http协议获取相应信息并转成相应的bean。...它实际上做的就是判断是不是multipart请求,如果是,尝试multipartRequest中获取MultipartFile对象。

    46930

    Android Okhttp断点续传面试深入解析

    前言 我们在刷一下面试题的时候,有时候会看到一些大厂会问关于断点续传的原理,那么今天在这里 HTTP 断点续传知识和 Android 中如何实现断点续传的思路来做一个关于 Android 断点续传原理的总结...Range 客户端想要获取文件的部分内容,那么它就需要请求头部中的 Range 参数中指定获取内容的起始字节的位置和终止字节的位置,它的格式一般为: Range:(unit=first byte...字节范围的内容 Range: bytes=-500 表示最后 500 字节的内容 Range: bytes=500- 表示第 500 字节开始到文件结束部分的内容 Range: bytes...downloadLength,若不存在,那么本地已下载文件的长度为 0 step 2:获取将要下载的文件总大小(HTTP 响应头部的 content-Length) step 3:比对已下载文件大小和将要下载的文件总大小...这样我们就可以按照一定的规则,将一个大文件拆分为若干很小的部分, * 然后分批次的下载,每个小块下载完成之后,再合并到文件中;这样即使下载中断了,重新下载时, * 可以通过文件的字节长度来判断下载的起始点

    1.1K50
    领券