当前位置: 首页 > 知识库问答 >
问题:

下载到临时文件夹,然后覆盖原始文件-速度问题?

易宣
2023-03-14

我有一个应用程序,下载一个单一的html文件和各种图像,有时,mp4视频。

在初次下载后,后台服务每15分钟进行一次重复下载。

该服务检查是否有任何新文件,是否有任何文件被修改(在这种情况下,通常是html文件被修改,一些新的图像将被下载)

我有一个显示html文件的webview,在后台服务成功下载一些新资产后,webview会被刷新。

然而,当服务下载时,应用程序将使用文件,并在webview中显示它们(视频是用videoview处理的,使用javascript桥,它可以翻转两个视图)

所以,对于我的问题。

在看到当前应用程序的一些可能问题后,我希望后台服务将资产下载到一个临时文件夹,而不是使用的主文件夹(我使用在下载中创建的子文件夹)

然后,一旦下载完成,我将“停止”webview,将文件形式“tmp”复制到真正的文件夹,并重新启动webview。

逻辑听起来还可以,但我担心速度。要复制的文件可能有100MB的重量(可能更多,希望更少,因为OBV的带宽问题。)那么,Android能以多快的速度复制这些东西呢?

理想情况下,转换需要在几秒钟内完成。

有人能对此提出建议吗?

共有1个答案

萧焱
2023-03-14

将临时目录放在主数据目录下面,然后使用原子重命名(2)调用将新文件移动到位。(只有当源目录和目标目录在同一个文件系统中时,这才会自动工作,因此建议使用tempfile放置。您也可以将它们作为filename.extension.new放置到同一个目录中,然后重命名它们。在设计文件名时,要像往常一样小心tempfile竞争;如果可以的话,可以使用mkstemp(3)之类的东西来创建它们。)

 类似资料:
  • 问题内容: 我有一个.net Core Web Api,其配置文件位于名为Config的文件夹下。我从中创建了图像和一个容器,并且使用终端可以正确看到该容器中包含文件夹和配置文件。 我的问题是,到目前为止,按照要求,我找不到找到将相同的容器安装/绑定Config文件夹绑定到物理路径的容器的方法: 1)将Config文件夹挂载到特定的主机位置 2)在创建容器时,Config文件夹应填充映像中的文件

  • 在我的项目中,我正在上传一个文件。上传时,我将其原始文件名和扩展名保存在数据库中,并将该文件与一些一起保存在服务器上,生成的GUID也与文件名和扩展名一起存储在数据库中。 比如-- -用于上载的文件名为Questions.docx -则orignalFileName将为“问题” -文件扩展名将为“.docx” -上传文件,文件名为“0C1B96D3-AF54-40D1-814D-B863B7528

  • 我想下载一个文件,同时保留文件的文件名。 我有: 我可以下载文件,但我下载的文件名总是“downloadFile”。pdf或下载文件。巴布亚新几内亚'。 如何保留原始文件名?谢谢

  • 我在根目录中有一个htaccess文件,在电影文件夹中有另一个htaccess文件。我想停止所有重写URL或影响“电影”文件夹的条件。我在电影文件夹访问中有一些其他规则。 我的根访问权限如下所示 我的子目录电影文件夹htaccess 上面的代码只是我最初的htaccess的一部分

  • 问题 你需要在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉。 解决方案 tempfile 模块中有很多的函数可以完成这任务。 为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile : from tempfile import TemporaryFile with TemporaryFile('w+t') as f: # Read/writ

  • 问题内容: 我需要一些帮助来创建文件 我在过去的几个小时中尝试使用RandomAccessFile并尝试实现下一个逻辑: 获取文件对象 创建一个具有相似名称的临时文件(我如何确保将临时文件与给定的原始文件放置在同一位置?) 写入此文件 用临时文件替换磁盘上的原始文件(应使用原始文件名)。 我正在寻找一个简单的代码,谁喜欢使用RandomAccessFile,我只是不正确地解决这几个步骤。 编辑:好