Android怎么实现文件资源管理器
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇"Android怎么实现文件资源管理器"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这
千家信息网最后更新 2025年11月14日Android怎么实现文件资源管理器
这篇"Android怎么实现文件资源管理器"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Android怎么实现文件资源管理器"文章吧。
先做需求分析(实现的功能):
1.ListView开始显示sdcard目录下的子目录和文件。
2.点击文件,Toast显示"点击的是文件"
3.点击目录,进入子目录,显示子目录下的子目录和文件。
4.back键回退到上层目录。
5.异常情况处理:
5.1如果sdcard没有插入,则不显示列表,且提示用户应该插入sdcard后操作
5.2不允许进入sdcard的上层目录
下面开始实现:
布局有两个:
1.主布局:file_list.xml
布局很简单,就是放置了一个ListView控件,这里要注意的是,ListView标签下不能再放入其他的子控件。内容是通过子布局和Adapter来显示的。
2.ListView中的子布局file_list_item.xml
子布局也很简单,就是在水平方向上左边显示一个图标,用来显示文件夹或文件图标,右边显示文件名。
3.Activity代码(功能点写在注释中)
public class FileExplorerActivity extends Activity { //Adapter中ICON和Filename键值对常量 private static final String ICON = "icon"; private static final String FILENAME = "filename"; private TextView currentTv;//ListView上显示当前路径的TextView private ListView fileLv;//文件列表显示的ListView SimpleAdapter adapter;//适配器 private List> data;//填充的数据 private File root;//文件夹根节点 private File[] currentFiles; //根节点下的所有文件(包括文件夹) private File currentPath;//记录当前节点 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_explorer); currentTv = (TextView)findViewById(R.id.currentTv); fileLv = (ListView)findViewById(R.id.fileLv); //得到根节点root -->/mnt/sdcard root = getFileSystemRoot(); //得到第一屏的信息 if(root != null){ //从/mnt/sdcard下得到文件列表 data = getFileListFromSdcard(root); }else{ //如果没有挂载sdcard,则提示用户 data = new ArrayList>(); HashMap map = new HashMap(); map.put(ICON, R.drawable.none); map.put(FILENAME, "逗我玩啊,插卡啊"); data.add(map); } //创建Adapater adapter = new SimpleAdapter( this, data, R.layout.file_list_item, new String[]{ICON, FILENAME}, new int[]{R.id.icon, R.id.filename}); fileLv.setAdapter(adapter); //绑定事件 fileLv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { //点击listview 项时,如果是目录,则进入下一层次,如果是文件,不做处理 File currentPosFile = currentFiles[position]; if(currentPosFile.isDirectory()){ getFileListFromSdcard(currentPosFile); }else{ Toast.makeText(FileExplorerActivity.this, "您点击的是文件夹", Toast.LENGTH_LONG).show(); } } }); } /** * 拦截back键返回 * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(KeyEvent.KEYCODE_BACK == keyCode){ File parentFile = currentPath.getParentFile(); //不能超过最顶层 try { if(parentFile.getCanonicalPath().toString().equals("/mnt")){ Toast.makeText(this, "别按了,到家了", Toast.LENGTH_LONG).show(); return true; }else{ getFileListFromSdcard(parentFile); } } catch (IOException e) { e.printStackTrace(); } } return super.onKeyDown(keyCode, event); } private File getFileSystemRoot() { //首先得到Sd卡是否加载了 if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){ //得到sd卡路径 root --> /mnt/sdcard root = Environment.getExternalStorageDirectory(); }else{ Toast.makeText(this, "逗我玩啊,插卡啊", Toast.LENGTH_LONG).show(); } return root; } /** * 得到Sdcard中的文件列表 * @return */ private List> getFileListFromSdcard(File root) { try { currentPath = root; currentTv.setText(root.getCanonicalPath().toString()); } catch (IOException e) { e.printStackTrace(); } List> list = new ArrayList>(); currentFiles = root.listFiles();//列出当前目录下的所有文件和目录 for(File f : currentFiles){ HashMap map = new HashMap(); String fileName = f.getName(); int icon; if(f.isDirectory()){ icon = R.drawable.dir; map.put(ICON, icon); }else if(f.isFile()){ icon = R.drawable.file; map.put(ICON, icon); } map.put(FILENAME, fileName); list.add(map); } //把原来的data list清空,然后把list放进去,再通知adapter if(data != null){ data.clear(); data.addAll(list); adapter.notifyDataSetChanged(); } return list; }} 运行效果:

功能展望:
以上代码是通过精简功能达到的,如果要增加以下功能也是相当之简单的:
1.文件夹和文件的删除功能
2.文件夹和文件的重命名功能
3.文件的分类调用App查看功能
4.文件详细信息显示功能
以上就是关于"Android怎么实现文件资源管理器"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
文件
功能
目录
内容
布局
文件夹
子目
子目录
节点
资源
资源管理
管理
就是
上层
代码
信息
图标
控件
文章
用户
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
主播自建服务器网易版
网络安全与勒索
助贷app软件开发
数据库的目的体现
服务器SI
业务管理软件开发
新浪潮软件开发有限公司
方舟服务器选择
excel数据库怎么建立
支付宝服务器被剪掉网线怎么办
韶关数字软件开发供应商家
云服务器数据库搭建
成都高仿服务器
深信服网络技术基础测试题答案
数据仓库 数据库 异同
青蛙互联网科技logo
周村物流报价软件开发公司
奉贤区企业软件开发信息中心
计算机网络技术的云计算
松江区信息网络技术应用
数据库中的数据定义包括什么
自家安装监控网络安全吗
服务器断开连接未发送数据
北京胭脂鱼信息网络技术
协助调查证据是大数据库吗
修改数据库的代码
邮件丢失怎么防止网络安全
浙江基础网络技术诚信为本
南阳从事软件开发的人多吗
安徽参考软件开发销售价格