
这是一款正在开发中的文件管理器进度总结文。
历史更新已经发布在专栏[Flutter+Rust再造文件管理器 - 知乎](https://zhuanlan.zhihu.com/column/c_1853073997857693697)。
时间过得真快,2024已经成了去年了。整个2024,是从打工牛马态转变为自由态的第一年,一边享受无拘无束,一边随意码代码。
去年12月,手机存储空间终于告警即将用尽了,看看用量,照片视频是大头,不想被云盘绑架,索性先迁移到PC上,有时间再解决备份的问题。
折腾半天一通导出,满满当当一个文件夹近2万个文件,文件列表进度条硬是走出了龟速加载网页的感觉。
为了方便整理分类,又切换大图标预览列表模式,硬盘咔咔一顿响,又走一遍进度条。
看着预览图,该删删该挪挪,最后发现底下还有一堆不支持预览的图片,一看扩展名HEIC了然了,iOS设备拍的照片在PC上不支持预览。
一番搜索折腾,最后也没成功让文件管理器可以支持预览HEIC图片。本着找不到就做一个的技术思维,冒出了做一个HEIC处理工具的想法。
软件工具用户界面,主要有两个大方向:命令行程序和GUI桌面程序。
命令行程序会简单很多,不需要去精心设计和布局,不需要考虑如何让界面元素更加美观、协调,如何处理各种窗口的显示、隐藏以及交互逻辑。但如果没有详细的文档和示例,只能自己知道怎么用。
GUI 桌面程序则复杂许多,正确实现目标功能是基本要求,还要在界面设计上花费大量心思,按钮输入等操作入口样式都要精心设计,色彩搭配也是必须考虑的元素。其次还要考虑性能优化,卡顿或假死都不能出现。设计合理的界面就是一个最直观的说明书,好的软件看一眼一上手就能明白怎么使用,这个是命令行程序怎么也做不到的。
思考一番后,决定做成GUI桌面程序,主要是以下几个原因:
技术选项确定后,花了几天先把HEIC转换器的界面画出来,然后选择文件点击转换查看输出确认功能正常。
实现批量功能时斟酌了许久,要选择多个文件,还要有进度控制,又想起被Windows内置Explorer进度条的折磨,既然也无甚别的忙的事情,Explorer看着好像也没什么高深的技术,何不自己做一个文件浏览器?
于是,说干就干。
以上是AI的回复,虽然有些地方有生搬硬凑的痕迹,但有些功能点还是挺有吸引力的。
汇总下来,一个是中枢化,一个是场景化,最终的文件管理器,不仅仅只是文件的管理器,是一个抽象的数据管理器。
更快,更稳定,更好用。
未来的文件管理器定位是面向各领域专业和非专业用户,保留传统文件管理器操作习惯的基础上,扩展独有的更好用功能。
未来的文件管理器暂时还没有确定最终名字和Logo,欢迎有想法的朋友提供想法和灵感。
经典桌面软件布局,无边框界面风格更加简洁。
亮色与暗色主题自由切换,重塑视觉体验。
界面中英多语言随心选,贴合常用语言无缝适配。
从2023年12月19日发布第一篇关于为什么要再造文件管理器的文章到今天,除去过年这些天,刚好一个月。
虽然Flutter和Rust这两个语言一直被质疑用于生产开发的稳定性,但在这一个月实际开发过程中表现还是很给力的。
Rust目前在项目里主要实现了文件系统API的处理和HEIC文件转换,其他功能逐渐开始开发后会有更多Rust代码参与。
Flutter作为界面表现层,随着实现越来越多的功能模块,其视觉表现能力和对UI元素从内到外的精细控制愈发凸显出强大的优势。
以上功能列表中,基本功能每个大项中的常用功能已经实现,比如:
项目已在Github上开源:[tinymahua/llfile: This is a files manager, writing with Flutter and Rust.](https://github.com/tinymahua/llfile)
基本功能正在参考传统文件管理器逐步完善,高级功能和扩展功能还在构思中。
目前同类产品主要分三个方向:
文件管理器,一般有两大功能:一个是目录管理,另一个是文件管理。
目录管理,顾名思义,可以操作管理文件系统里所有目录项,比如常见的新建,修改,删除,移动,统计等。
文件管理,主要围绕文件相关属性提供一些常规操作,而关于特定文件对象操作,比如格式转换,编辑,组织等都由外部程序处理。
这种解耦的模式在软件工程里是一个重要的概念,但由此带来大量程序组织分散的问题,程序之间难以协作无法高效配合以及自动化。
这个现象主要是由于目前软件领域的封闭性造成,一个个软件安装时有什么功能除非版本升级永远不会增加,难以扩展形成完整的生态。
基于这个思考,因此未来的浏览器最大的特色就是扩展能力,功能必须可插拔可扩展,保持常规功能高可用的前提下,尽量提高功能探索的上限。
可扩展能力,首要因素就是开放性,在技术领域,开放性主要体现在两个层面,一个是API层,一个是源码层面。
API层的开放性是插件扩展平台的基础,才能在版本发布后保持功能的可扩展能力。
源码层的开放性,即开源,既可以保持常规版本功能的快速迭代,又能为整个生态系统注入源源不断的活力与创新动力。
其次是合理灵活的架构,一个优秀的架构应该具备良好的分层设计和模块化结构。各个模块之间职责清晰、耦合度低。
这样的架构设计使得系统在面对新的功能需求或业务变化时,能够轻松地添加、修改或替换相应的模块,而不会对整个系统造成过大的影响。
开放性与合理灵活的架构共同构建了系统强大的可扩展能力,只需在现有的架构基础上,针对性地开发或整合相关的模块,就能快速实现功能的扩展,并且保证系统的稳定性和性能不受影响。
可扩展能力主要包括以下几个层面:
以上内容分享总结了代号为未来文件管理器这个项目的立项过程以及我对文件管理器功能的一些看法和认知。
文件管理器是一个整体厚重且可探索度很高的赛道,很多的创意可以加上,也有机会脱颖而出。
接下来的重点方向主要两个:
个人能力和认知有限,希望可以抛砖引玉,找到一些感兴趣的朋友一起来探索实现文件管理器的未来可能性。
