核心代码:

File fatherFile = new File(path);File[] files = fatherFile.listFiles();
效果图:
实现这种列表式的目录,用直接读取目录下文件方法会比较简单,但是如果要根据文件类型从所有文件中分类,那就用ContentProvider去查询数据库方式会更有效率;
实现代码:
FileListActivity.java
package com.example.d_readandwritetextfile;
import java.io.File;
import java.util.ArrayList;
import com.example.d_readandwritetextfile.entity.FileEntity;
import com.example.d_readandwritetextfile.entity.FileEntity.Type;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
/**
* 文件列表 界面
* @author Administrator
*
*/
public class FileListActivity extends Activity implements OnClickListener{
private ListView mListView;
private Button btnComfirm;
private MyFileAdapter mAdapter;
private Context mContext;
private File currentFile;
String sdRootPath;
private ArrayList<FileEntity> mList;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filelist);
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
if(mAdapter ==null){
mAdapter = new MyFileAdapter(mContext, mList);
mListView.setAdapter(mAdapter);
}else{
mAdapter.notifyDataSetChanged();
}
break;
case 2:
break;
default:
break;
}
}
};
mContext = this;
mList = new ArrayList<>();
sdRootPath =Environment.getExternalStorageDirectory().getAbsolutePath();
currentFile = new File(sdRootPath);
System.out.println(sdRootPath);
initView();
getData(sdRootPath);
}
@Override
public void onBackPressed() {
// super.onBackPressed();
System.out.println("onBackPressed...");
if(sdRootPath.equals(currentFile.getAbsolutePath())){
System.out.println("已经到了根目录...");
return ;
}
String parentPath = currentFile.getParent();
currentFile = new File(parentPath);
getData(parentPath);
}
private void initView() {
mListView = (ListView) findViewById(R.id.listView1);
btnComfirm = (Button) findViewById(R.id.button1);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
final FileEntity entity = mList.get(position);
if(entity.getFileType() == Type.FLODER){
currentFile = new File(entity.getFilePath());
getData(entity.getFilePath());
}else if(entity.getFileType() == Type.FILE){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, entity.getFilePath()+" "+entity.getFileName(),
1).show();
}
});
}
}
});
}
private void getData(final String path) {
new Thread(){
@Override
public void run() {
super.run();
findAllFiles(path);
}
}.start();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
setResult(100);
finish();
break;
default:
break;
}
}
/**
* 查找path地址下所有文件
* @param path
*/
public void findAllFiles(String path) {
mList.clear();
if(path ==null ||path.equals("")){
return;
}
File fatherFile = new File(path);
File[] files = fatherFile.listFiles();
if (files != null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
FileEntity entity = new FileEntity();
boolean isDirectory = files[i].isDirectory();
if(isDirectory ==true){
entity.setFileType(Type.FLODER);
// entity.setFileName(files[i].getPath());
}else{
entity.setFileType(Type.FILE);
}
entity.setFileName(files[i].getName().toString());
entity.setFilePath(files[i].getAbsolutePath());
entity.setFileSize(files[i].length()+"");
mList.add(entity);
}
}
mHandler.sendEmptyMessage(1);
}
class MyFileAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<FileEntity> mAList;
private LayoutInflater mInflater;
public MyFileAdapter(Context mContext, ArrayList<FileEntity> mList) {
super();
this.mContext = mContext;
this.mAList = mList;
mInflater = LayoutInflater.from(mContext);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mAList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mAList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
if(mAList.get(position).getFileType() == Type.FLODER){
return 0;
}else{
return 1;
}
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// System.out.println("position-->"+position+" ---convertView--"+convertView);
ViewHolder holder = null;
int type = getItemViewType(position);
FileEntity entity = mAList.get(position);
if(convertView == null){
holder = new ViewHolder();
switch (type) {
case 0://folder
convertView = mInflater.inflate(R.layout.item_listview, parent, false);
holder.iv = (ImageView) convertView.findViewById(R.id.item_imageview);
holder.tv = (TextView) convertView.findViewById(R.id.item_textview);
break;
case 1://file
convertView = mInflater.inflate(R.layout.item_listview, parent, false);
holder.iv = (ImageView) convertView.findViewById(R.id.item_imageview);
holder.tv = (TextView) convertView.findViewById(R.id.item_textview);
break;
default:
break;
}
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
switch (type) {
case 0:
holder.iv.setImageResource(R.drawable.folder_125);
holder.tv.setText(entity.getFileName());
break;
case 1:
holder.iv.setImageResource(R.drawable.file);
holder.tv.setText(entity.getFileName());
break;
default:
break;
}
return convertView;
}
}
class ViewHolder {
ImageView iv;
TextView tv;
}
}
FileEntity.java
package com.example.d_readandwritetextfile.entity;
public class FileEntity {
public enum Type{
FLODER,FILE
}
private String filePath;
private String fileName;
private String fileSize;
private Type fileType;
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileSize() {
return fileSize;
}
public void setFileSize(String fileSize) {
this.fileSize = fileSize;
}
public Type getFileType() {
return fileType;
}
public void setFileType(Type fileType) {
this.fileType = fileType;
}
}
activity_filelist.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="14dp"
android:onClick="onClick"
android:text="确定" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#666"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
item_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/item_imageview"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="10dp"
android:src="@drawable/folder_125"
android:scaleType="fitXY"
/>
<TextView
android:id="@+id/item_textview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:text="TextView"
android:gravity="center"
/>
</LinearLayout>
以上这篇android简易文件管理器实例(列表式文件目录)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# 简易文件管理器
# Android基于Flutter编写文件下载管理器
# android文件管理器用法详解
# Android开发之简单文件管理器实现方法
# 浅析Android文件管理器(项目一)
# Android实现文件资源管理器雏形
# 给大家
# 表式
# 希望能
# 更有
# 管理器
# 这篇
# 就用
# 文件列表
# 小编
# 大家多多
# 法会
# 目录下
# lt
# super
# void
# setContentView
# gt
# protected
# savedInstanceState
# onCreate
相关文章:
建站之星微信建站一键生成小程序+多端营销系统
如何快速生成橙子建站落地页链接?
网站微信制作软件,如何制作微信链接?
如何挑选最适合建站的高性能VPS主机?
电商网站制作公司有哪些,1688网是什么意思?
做企业网站制作流程,企业网站制作基本流程有哪些?
黑客如何利用漏洞与弱口令入侵网站服务器?
大型企业网站制作流程,做网站需要注册公司吗?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
西安专业网站制作公司有哪些,陕西省建行官方网站?
公司网站设计制作厂家,怎么创建自己的一个网站?
建站之星安装后如何配置SEO及设计样式?
如何在新浪SAE免费搭建个人博客?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何有效防御Web建站篡改攻击?
C#怎么使用委托和事件 C# delegate与event编程方法
php json中文编码为null的解决办法
韩国服务器如何优化跨境访问实现高效连接?
建站之星会员如何解锁更多建站功能?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
建站之星2.7模板:企业网站建设与h5定制设计专题
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
如何在阿里云高效完成企业建站全流程?
网页设计网站制作软件,microsoft office哪个可以创建网页?
建站之星如何修改网站生成路径?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
建站主机选择指南:服务器配置与SEO优化实战技巧
如何选择香港主机高效搭建外贸独立站?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
威客平台建站流程解析:高效搭建教程与设计优化方案
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
建站之星如何实现网站加密操作?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
建站之星代理如何获取技术支持?
如何通过智能用户系统一键生成高效建站方案?
如何选择最佳自助建站系统?快速指南解析优劣
如何用景安虚拟主机手机版绑定域名建站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何在IIS7中新建站点?详细步骤解析
Swift中swift中的switch 语句
小型网站制作HTML,*游戏网站怎么搭建?
如何在腾讯云免费申请建站?
金*站制作公司有哪些,金华教育集团官网?
清除minerd进程的简单方法
网站网页制作专业公司,怎样制作自己的网页?
如何在服务器上三步完成建站并提升流量?
红河网站制作公司,红河事业单位身份证如何上传?
*请认真填写需求信息,我们会在24小时内与您取得联系。