Amaze File Manager:一款基于 Material Design 的开源安卓文件管理器

news/2026/1/17 0:26:58/文章来源:https://www.cnblogs.com/qife122/p/19423654

Amaze File Manager

Amaze File Manager 是一款遵循 Material Design 设计规范的 Android 开源文件管理器。它设计简约、运行流畅,并提供了从基础文件操作到高级网络存储支持的全方位功能。

功能特性

  • 全面的文件操作:支持复制、剪切、粘贴、删除、重命名、创建文件夹等所有基础文件管理操作。
  • 多协议远程支持:无缝集成 FTP、FTPS、SFTP、SMB 等多种网络文件传输协议,方便管理远程服务器文件。
  • 主流云存储集成:支持连接 Google Drive、Dropbox、OneDrive、Box 等主流云存储服务,统一管理云端文件。
  • Material Design 3 界面:采用现代化的 Material You(Material Design 3)设计语言,提供美观且符合直觉的用户体验。
  • 高级文件处理
    • 文件加密/解密:使用 AES 加密算法对文件进行安全加密保护。
    • 压缩包处理:支持查看和提取多种压缩格式(如 ZIP, RAR, 7z, TAR, GZIP, BZIP2 等)的内容。
  • 内置实用工具
    • FTP 服务器:可将您的设备变为一个 FTP 服务器,方便在局域网内共享文件。
    • Root 权限支持:在已获得 Root 权限的设备上,可访问和管理系统目录及文件。
    • 应用管理:查看已安装应用列表,并管理 APK 文件。
  • 可定制化体验:支持多种主题配色、视图模式(列表/网格)以及文件排序规则,满足个性化需求。

安装指南

从 GitHub Releases 安装

  1. 访问本项目的 GitHub Releases 页面。
  2. 下载最新版本的 APK 文件。
  3. 在您的 Android 设备上启用“从未知来源安装应用”的选项。
  4. 使用文件管理器找到下载的 APK 文件并点击安装。

系统要求

  • Amaze v3.8.5:支持 Android 4.0 (Ice Cream Sandwich) 及以上版本。
  • Amaze v4.x.x:仅支持 Android 4.4 (KitKat) 及以上版本。

注意:对于运行 Android 4.4 以下版本的设备,最后的兼容版本是 v3.8.5

使用说明

Amaze File Manager 的核心是提供一个统一且强大的界面来浏览和操作不同来源的文件。

基础文件浏览

启动应用后,您将看到本地存储的目录结构。您可以像使用任何其他文件管理器一样:

  • 点击文件夹进入。
  • 长按文件或文件夹以选择,然后使用底部操作栏进行复制、移动、删除等操作。

添加远程或云存储位置

  1. 点击侧边栏(抽屉菜单)或主界面上的“添加存储”按钮。
  2. 选择您想要添加的存储类型(例如:FTP、SFTP、SMB、Google Drive 等)。
  3. 根据提示输入连接所需的详细信息(如服务器地址、用户名、密码等)。
  4. 连接成功后,新的存储位置将出现在您的侧边栏中,您可以像访问本地文件一样访问它。

使用文件操作

Amaze 支持跨不同存储位置的文件操作。例如,您可以将一个文件从 Google Drive 复制到设备的本地下载文件夹,或者将一个压缩包从 FTP 服务器解压到 SD 卡。

示例:使用 Paste 操作

// 核心操作逻辑封装在 Paste、CopyTask 等类中
// 以下代码片段展示了核心操作的调用思路
val sourcePaths = arrayOf("/storage/emulated/0/Download/myfile.txt")
val operationData = OperationData(UtilsHandler.Operation.COPY,sourcePaths,destinationPath
)
// 将操作数据传递给后台任务执行
utilsHandler.saveToDatabase(operationData)

安全与加密

您可以使用内置的加密功能保护敏感文件。加密后的文件扩展名为 .aze,需要密码才能解密和访问。

核心代码解析

Amaze File Manager 采用模块化设计,代码结构清晰。以下是几个关键模块的简要说明:

1. 文件系统抽象层 (HybridFile, HybridFileParcelable)

这是项目的核心,为本地文件、云文件、远程文件(FTP/SMB)提供了一个统一的抽象接口。

关键类:HybridFileParcelable

/** 代表一个可序列化的文件对象,封装了文件路径、类型、权限、大小和修改日期等信息。* 实现了 Parcelable 接口,便于在 Android 组件间传递。*/
public class HybridFileParcelable extends HybridFile implements Parcelable, ComparableParcelable {private long date, size;private boolean isDirectory;private String permission; // 例如 "rwx"public HybridFileParcelable(String path, String permission, long date, long size, boolean isDirectory) {super(OpenMode.FILE, path); // 调用父类构造函数this.permission = permission;this.date = date;this.size = size;this.isDirectory = isDirectory;}// Parcelable 实现,用于跨进程/组件传递@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(getPath());dest.writeString(permission);dest.writeLong(date);dest.writeLong(size);dest.writeByte((byte) (isDirectory ? 1 : 0));}// 从 Parcel 重建对象protected HybridFileParcelable(Parcel in) {super(OpenMode.FILE, in.readString());permission = in.readString();date = in.readLong();size = in.readLong();isDirectory = in.readByte() != 0;}public static final Creator<HybridFileParcelable> CREATOR = new Creator<HybridFileParcelable>() {@Overridepublic HybridFileParcelable createFromParcel(Parcel in) {return new HybridFileParcelable(in);}@Overridepublic HybridFileParcelable[] newArray(int size) {return new HybridFileParcelable[size];}};
}

2. 数据库与数据管理

项目使用 Room 持久化库管理书签、历史记录、远程服务器连接信息等。

工具类数据库操作 (UtilsHandler)

/** 处理应用工具相关的数据库操作,如书签、历史记录、SFTP/SMB连接等。*/
public class UtilsHandler {private UtilitiesDatabase utilitiesDatabase;private Context context;// 保存一项操作数据到数据库public void saveToDatabase(OperationData operationData) {switch (operationData.type) {case Operation.BOOKMARKS:// 将书签数据插入 Room 数据库Bookmark bookmark = new Bookmark(operationData.name, operationData.path);utilitiesDatabase.bookmarkEntryDao().insert(bookmark);break;case Operation.SFTP:// 保存SFTP服务器连接信息,路径可能经过加密SftpEntry sftpEntry = new SftpEntry(operationData.name,operationData.path, // 可能是加密后的URIoperationData.hostKey,operationData.sshKeyName,operationData.sshKey);utilitiesDatabase.sftpEntryDao().insert(sftpEntry);break;// ... 处理其他操作类型}}// 从数据库获取书签列表public List<String[]> getBookmarksList() {List<Bookmark> bookmarks = utilitiesDatabase.bookmarkEntryDao().list().blockingGet();List<String[]> result = new ArrayList<>();for (Bookmark b : bookmarks) {result.add(new String[]{b.name, b.path});}return result;}
}

3. 文件复制与移动 (GenericCopyUtil)

这个工具类负责处理跨不同文件源(本地、FTP、云存储)的文件复制操作,使用通道和缓冲区进行高效数据传输。

核心复制方法

/** 提供通用的文件复制功能,支持多种数据源和目标。*/
public class GenericCopyUtil {public static final int DEFAULT_BUFFER_SIZE = 8192;// 使用 NIO 通道进行高效复制public void doCopy(ReadableByteChannel in, WritableByteChannel out, UpdatePosition updatePosition)throws IOException {final ByteBuffer buffer = ByteBuffer.allocateDirect(DEFAULT_BUFFER_SIZE);long progress = 0;while (in.read(buffer) != -1) {buffer.flip();out.write(buffer);progress += buffer.position();updatePosition.updatePosition(progress); // 更新进度回调buffer.clear();}}// 使用缓冲流进行复制(适用于非通道接口)public void copyFile(BufferedInputStream in, BufferedOutputStream out, UpdatePosition updatePosition)throws IOException {byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];long progress = 0;int len;while ((len = in.read(buffer)) > 0) {out.write(buffer, 0, len);progress += len;updatePosition.updatePosition(progress); // 更新进度回调}}
}

4. 压缩文件处理 (Extractor 及其子类)

项目通过一个抽象的 Extractor 类和一系列针对不同压缩格式的实现类(如 ZipExtractor, RarExtractor, SevenZipExtractor, TarGzExtractor 等)来处理压缩文件。

抽象提取器基类

/** 压缩文件内容提取器的抽象基类。* 定义了提取流程和与进度监听器的交互接口。*/
public abstract class Extractor {protected Context context;protected String filePath, outputPath;protected OnUpdate listener;protected UpdatePosition updatePosition;public Extractor(@NonNull Context context, @NonNull String filePath,@NonNull String outputPath, @NonNull OnUpdate listener,@NonNull UpdatePosition updatePosition) {this.context = context;this.filePath = filePath;this.outputPath = outputPath;this.listener = listener;this.updatePosition = updatePosition;}// 提取所有文件public void extractEverything() throws IOException {extractWithFilter((relativePath, isDir) -> true); // 过滤器允许所有文件}// 提取特定文件public void extractFiles(String[] files) throws IOException {HashSet<String> filesToExtract = new HashSet<>(Arrays.asList(files));extractWithFilter((relativePath, isDir) -> {// 过滤器逻辑:只提取在目标列表中的文件或其父目录if (filesToExtract.contains(relativePath)) {if (!isDir) filesToExtract.remove(relativePath);return true;}for (String path : filesToExtract) {if (relativePath.startsWith(path)) {return true;}}return false;});}// 子类必须实现的具体提取逻辑protected abstract void extractWithFilter(@NonNull Filter filter) throws IOException;// 进度更新回调接口public interface OnUpdate {void onStart(long totalBytes, String firstEntryName);void onUpdate(String entryPath);void onFinish();boolean isCancelled();}// 文件过滤器接口protected interface Filter {boolean shouldExtract(String relativePath, boolean isDirectory);}
}

uADtARBV6Bfrq4LaOaKJxRrZSd7QwVq6oQm5qXuOAc8=
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1098167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM解析脑电波,中风康复预测提前1月

&#x1f4dd; 博客主页&#xff1a;Jax的CSDN主页 目录超越症状&#xff1a;AI如何识别医疗决策中的“沉默成本” 一、沉默成本&#xff1a;医疗决策的隐形黑洞 二、大模型如何破译“沉默成本”&#xff1f; 1. 从医患对话中提取情感线索 2. 社交网络数据的伦理化挖掘 3. 多模…

综合实践

综合实践综合实践这个项目属于哪个课程 2025综合设计——多源异构数据采集与融合应用综合实践组名、项目简介 组名:项目需求:随着个性化旅游需求的爆发式增长,传统碎片化的信息获取与行程管理方式已无法满足用户对效…

2025专科生必看!9大AI论文平台测评,写毕业论文还能这么快?

2025专科生必看&#xff01;9大AI论文平台测评&#xff0c;写毕业论文还能这么快&#xff1f; 2025年专科生论文写作新选择&#xff1a;AI平台测评全面解析 随着人工智能技术的不断进步&#xff0c;越来越多的专科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上…

AI率怎么都降不下去?前五降AI工具真实体验

又到毕业季&#xff0c;毕业论文除了查重外&#xff0c;真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低&#xff01;实测全网产品&#xff0c;无广&#xff01;&#xff01; 如果这篇整理能帮你少走点弯路&#xff0c;那就值了。 1、嘎嘎降AI 官网&…

靠谱的康有利到家理疗小程序公司

靠谱的康有利到家理疗小程序公司引言在互联网技术飞速发展的当下&#xff0c;到家理疗服务借助小程序平台得到了更广泛的推广与应用。康有利到家理疗小程序作为这一领域的新兴力量&#xff0c;其背后靠谱的开发与运营公司显得至关重要&#xff0c;而利民科技便是其中的佼佼者。…

【记录】2025 年终总结

恍惚而逝,不曾记得自己过过这一年。 线 一月 并没有什么明确的记忆。 好像是因为要学画画被拉进了同学建的一个群。 然而直到现在还没动笔。 那个月好像整了挺多 Trance demo 的,不过现在都被删除了。 二月 记忆更加…

Java毕设选题推荐:基于SpringBoot+Vue的具有推荐功能的二手交易基于SpringBoot+Vue的二手数码产品交易平台的开发与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Java毕设选题推荐:基于SpringBoot社区住户信息管理系统基于web的社区居民信息管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Alpine.js:轻量级JavaScript框架完全入门指南

Alpine.js:轻量级JavaScript框架完全入门指南 Alpine.js就像是你一直在寻找的那个工具——简单、强大、不出问题。今天我们来看看这个"小而美"的框架如何改变你的开发体验。 🌟 什么是Alpine.js? Alpine.js是一个轻量级的JavaScript框架,它的设计哲学非常独特:…

网易云音乐ncm加密转mp3格式

背景 继QQ音乐加密格式转mp3后,前文:https://www.cnblogs.com/Comets9224/p/19423567 尝试对网易云的ncm格式进行转换。使用同样的,针对ncm格式,转换成mp3格式 问题介绍网易云音乐的加密不比qq音乐严格,不需要下载…

Java特性和优势

Java特性和优势 简单性 面向对象 可移植性 高性能 分布性 动态性 多线程 安全性 健壮性

京东多智能体———多源异构数据采集与融合应用综合实践

这个项目属于哪个课程 2025数据采集与融合技术实践组名、项目简介组名:暴虎 项目简介:基于京东多智能体挑战赛(https://www.xir.cn/competitions/1141),依托 OxyGent 开源框架,构建多智能体系统,实现多模态数据…

MouseClick下载及使用教程:开源鼠标连点器神器:支持热键、自定义间隔、跨平台(windows)

MouseClick下载及使用教程:开源鼠标连点器神器&#xff1a;支持热键、自定义间隔、跨平台(windows) 在日常工作中&#xff0c;你是否遇到过需要重复点击鼠标的繁琐场景&#xff1f;比如批量处理文件、游戏刷怪、自动化测试等。今天给大家分享一款开源的鼠标连点器工具&#xff…

涛哥抽卡四大美女

涛哥抽卡四大美女最后boss要提前出击堵住高地. 坦克地堡很肉出一堆垫着.

绵阳家长必看!2025年优质实验学校,高中/名办高中/实验中学/中学/高中复读学校/学校/实验学校实验学校哪家好 - 品牌推荐师

引言:在多元与质量中探寻教育最优解 随着教育改革的深化与家长教育观念的升级,选择一所契合孩子个性发展、又能提供坚实升学保障的高中,成为众多家庭的核心关切。实验学校,凭借其创新的办学理念、灵活的机制和多元…

【毕业设计】基于SpringBoot+Vue的二手数码产品交易平台的开发与实现(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

前五降AI工具实测,好用的都在这里了

又到毕业季&#xff0c;毕业论文除了查重外&#xff0c;真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低&#xff01;实测全网产品&#xff0c;无广&#xff01;&#xff01; 如果这篇整理能帮你少走点弯路&#xff0c;那就值了。 1、嘎嘎降AI 官网&…

计算机Java毕设实战-基于SpringBoot社区住户信息管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【课程设计/毕业设计】基于web的社区居民信息管理系统基于SpringBoot社区住户信息管理系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

为什么说Agentic AI的社会价值是提示工程架构师的「职业护城河」?

从「工具驯化者」到「Agent设计师」:为什么Agentic AI的社会价值是提示工程架构师的「职业护城河」? 引言:当AI从「听话的工具」变成「会思考的伙伴」 早上8点,北京中关村的咖啡店里,产品经理小夏正对着电脑发愁——她要为新上线的环保APP写一篇面向Z世代的推广文案。放…