Android学习笔记02——浏览手机中的文件夹

Android学习笔记02——浏览手机中的文件夹

要点一:获取当前目录下的文件列表

File[] files = new File(filePath).listFiles();

要点二:获取父目录文件

File f = new File(currPath);
f = f.getParentFile();

要点三:记录当前文件列表路径

String currPath = f.getPath();

先上效果图:
这里写图片描述

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:background="#ffffff"
    android:layout_height="fill_parent"
    >   
    <Button
        android:id="@+id/back"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="返回上一层目录"
        android:textSize="18dip"            
        /> 
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        >
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            >
            <TextView
                android:id="@+id/currDirTV"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#000000"
                />
        </LinearLayout>     
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingTop="10dip"
            >
            <ListView               
                android:id="@+id/lv"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:textSize="18dip"
                />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

Sample2_6_Activity.java

package com.bn.pp6;

import java.io.File; //导入相关包
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class Sample2_6_Activity extends Activity {// 创建Activity
    String currPath; // 当前路径字符串
    String rootPath = "/"; // 根目录路径
    TextView currDirTV;//显示当前路径的TextView
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); // 设置layout
        final ListView lv = (ListView) this.findViewById(R.id.lv); // 获取ListView
        Button back = (Button) this.findViewById(R.id.back); // 获取返回按钮
        final File[] files = getFiles(rootPath); // 调用getFiles方法获取根目录下文件列表
        currDirTV = (TextView) this.findViewById(R.id.currDirTV); // 获取ListView
        currPath = rootPath;
        currDirTV.setText("当前路径:" + currPath);//设置当前路径
        initListView(files, lv); // 初始化显示列表
        back.setOnClickListener // 返回按钮监听器
        (new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!currPath.equals(rootPath)) {// 若当前路径不是根目录,返回到上一层目录
                    File f = new File(currPath); // 获取当前路径下的文件列表
                    f = f.getParentFile(); // 获取当前路径的上层路径
                    currPath = f.getPath(); // 更改当前路径
                    currDirTV.setText("当前路径:" + currPath);//设置当前路径
                    initListView(getFiles(currPath), lv); // 初始化显示列表
                }
            }
        });
    }
    // 获取当前目录下的文件列表的方法
    public File[] getFiles(String filePath) {
        File[] files = new File(filePath).listFiles();// 获取当前目录下的文件列表
        return files; // 返回文件列表
    }
    // 初始化ListView进行显示  
    public void initListView(final File[] files, final ListView lv) {
        // 当文件列表不为空时
        if (files != null) {
            if (files.length == 0) {// 当前目录为空
                File f = new File(currPath); // 获取当前路径对应文件列表
                f = f.getParentFile(); // 获取上层路径
                currPath = f.getPath(); // 记录当前路径
                currDirTV.setText("当前路径:" + currPath);//设置当前路径
                Toast.makeText(this, "该文件夹为空!!", Toast.LENGTH_SHORT).show();
            } else {
                BaseAdapter ba = new BaseAdapter()// 创建适配器
                {
                    @Override
                    public int getCount() {
                        return files.length;
                    }

                    @Override
                    public Object getItem(int position) {
                        return null;
                    }

                    @Override
                    public long getItemId(int position) {
                        return 0;
                    }

                    @Override
                    public View getView(int arg0, View arg1, ViewGroup arg2) {
                        LinearLayout ll = new LinearLayout(
                                Sample2_6_Activity.this); // 创建LinearLayout
                        ll.setOrientation(LinearLayout.VERTICAL); // 竖直排列
                        ll.setPadding(5, 5, 5, 5); // 设置留白
                        TextView tv = new TextView(Sample2_6_Activity.this); // 创建TextView
                        tv.setTextColor(Color.BLACK); // 设置字体颜色
                        tv.setText(files[arg0].getName()); // 添加文字为文件名称
                        tv.setGravity(Gravity.LEFT); // 左对齐
                        tv.setTextSize(16); // 字体大小
                        ll.addView(tv); // 添加TextView
                        return ll; // 返回LinearLayout
                    }
                };
                lv.setAdapter(ba); // 为ListView设置适配器
                lv.setOnItemClickListener // 为ListView添加监听器
                (new OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {
                        currPath = files[arg2].getPath(); // 获取点击的文件名称的当前路径
                        currDirTV.setText("当前路径:" + currPath);//设置当前路径
                        File[] fs = getFiles(currPath); // 获取当前路径的文件列表
                        initListView(fs, lv); // 初始化ListView
                    }
                });
            }
        } else {
            File f = new File(currPath); // 获取当前文件列表的路径对应的文件
            f = f.getParentFile(); // 获取父目录文件
            currPath = f.getPath(); // 记录当前文件列表路径
            currDirTV.setText("当前路径:" + currPath);//设置当前路径
            Toast.makeText(this, "该目录不是文件夹或无权限访问!", Toast.LENGTH_SHORT).show();
        }
    }
}

这里比较简单,就不给源码下载地址了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值