为啥下载都喜欢弄一个临时目录

2017-09-20 10:53:56 +08:00
 fishcat
现在的项目需要写一个下载工具,GitHub 上看了一下,很多下载都喜欢弄一个临时目录,但是迅雷、aria2 等下载不是直接就下载到需要保存的目录了吗?
查了一下,是不是历史原因,以前可能需要保存的文件夹可能会出现磁盘空间不够,所以先下载到临时目录再拷贝过去?
是不是现在我可以直接想 aria2 一样直接下载到需要保存的目录,然后减少一次拷贝工作,这个的坑在哪?
4739 次点击
所在节点    程序员
9 条回复
ysc3839
2017-09-20 10:54:40 +08:00
“很多下载”?能否举个例子?
fishcat
2017-09-20 10:57:45 +08:00
@ysc3839 比较多 https://github.com/search?utf8=%E2%9C%93&q=%E4%B8%8B%E8%BD%BD&type=Repositories 可以自己看一下,我看了几个都是有临时目录的
yonka
2017-09-20 11:03:31 +08:00
1. 下载都需要写文件,内存 buf 不够
2. 写临时文件然后下载完 copy/move 过去(可能)可以保证文件完整性
3. 直接写文件的话,需要区分“是否完整文件”,比较麻烦
4. 迅雷等一般是在当前目录下存储“临时文件”,不过是特殊的临时文件,额外记录了进度信息等。 因为迅雷等要支持断点续传,如果写在临时目录,续传时可能就被清理了。
fishcat
2017-09-20 11:05:27 +08:00
@yonka 谢谢
@ysc3839 感谢, 主要是没有做过这一块,所以想了解一下
murmur
2017-09-20 11:07:35 +08:00
下载的如果真的是临时文件,那么用户随便运行个垃圾清理软件就可以把这些东西删掉了
另外 temp 目录一般不需要权限吧
安装的时候和用户要一次提权就可以了
另外国内软件现在用 temp 的应该一半一半了,360 系的反正都不咋用临时目录,下载的安装包、驱动什么都可以拷出来
nifury
2017-09-20 11:09:09 +08:00
LZ 说的是像 IDM 那样分块下载再合并的么? IDM 这样做好像是因为多线程下载操作同一个文件的话容易出现问题(我真不知道为何容易出现问题)
fishcat
2017-09-20 11:13:57 +08:00
@murmur 感谢
@nifury 感谢
laucenmi
2017-09-20 11:54:52 +08:00
零时文件,或者藏大姐姐
owenliang
2017-09-20 13:18:50 +08:00
mv 可以保障原子性。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392188

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX