当前位置:操作系统 > 安卓/Android >>

Android应用小实例--SD卡文件浏览器

 

最终效果图:

\

实现SD卡文件浏览器

 

技术分析:

主要用到的控件:ListView

如何填充这个ListView控件,那么就需要去遍历整个SD卡下的所有文件,如果遍历的是文件夹那么先获取该文件夹的下的所有文件,再把这个所有文件填充到这个ListView里就可以了,如此反复就可以了

如何获取文件夹或者文件的修改日期?

用java里的File类只为我们提供了一个public long lastModified():表示文件最后一次被修改的时间的long 值,用与时间点(1970 年1 月1 日,00:00:00 GMT)之间的毫秒数表示;如果该文件不存在,或者发生I/O 错误,则返回0L

 

File myFile = new File("D:\\Android开发常用图标"); 

 

 

 

   long modTime = myFile.lastModified(); 

 

   SimpleDateFormat dateFormat = new SimpleDateFormat( 

 

          "yyyy-MM-dd HH:mm:ss"); 

 

   System.out.println(dateFormat.format(new Date(modTime))); 

 

 

实现代码:

 

 

 

package com.jiahui.sdcardfileexplorer; 

 

import java.io.File; 

import java.text.DateFormat; 

import java.text.SimpleDateFormat; 

import java.util.ArrayList; 

import java.util.Date; 

import java.util.HashMap; 

import java.util.List; 

import java.util.Map; 

 

import android.app.Activity; 

import android.os.Bundle; 

import android.view.View; 

import android.widget.AdapterView; 

import android.widget.AdapterView.OnItemClickListener; 

import android.widget.Button; 

import android.widget.ListView; 

import android.widget.SimpleAdapter; 

import android.widget.TextView; 

import android.widget.Toast; 

 

public class SDCardFileExplorerActivity extends Activity { 

 

    private TextView tvpath; 

    private ListView lvFiles; 

    private Button btnParent; 

 

    // 记录当前的父文件夹 

    File currentParent; 

 

    // 记录当前路径下的所有文件夹的文件数组 

    File[] currentFiles; 

 

    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

 

        lvFiles = (ListView) this.findViewById(R.id.files); 

 

        tvpath = (TextView) this.findViewById(R.id.tvpath); 

        btnParent = (Button) this.findViewById(R.id.btnParent); 

 

        // 获取系统的SDCard的目录 

        File root = new File("/mnt/sdcard/"); 

        // 如果SD卡存在的话 

        if (root.exists()) { 

 

            currentParent = root; 

            currentFiles = root.listFiles(); 

            // 使用当前目录下的全部文件、文件夹来填充ListView 

            inflateListView(currentFiles); 

 

        } 

 

        lvFiles.setOnItemClickListener(new OnItemClickListener() { 

            @Override 

            public void onItemClick(AdapterView<?> adapterView, View view, 

                    int position, long id) { 

                // 如果用户单击了文件,直接返回,不做任何处理 

                if (currentFiles[position].isFile()) { 

                    // 也可自定义扩展打开这个文件等 

                    return; 

                } 

                // 获取用户点击的文件夹 下的所有文件 

                File[] tem = currentFiles[position].listFiles(); 

                if (tem == null || tem.length == 0) { 

 

                    Toast.makeText(SDCardFileExplorerActivity.this, 

                            "当前路径不可访问或者该路径下没有文件", Toast.LENGTH_LONG).show(); 

                } else { 

                    // 获取用户单击的列表项对应的文件夹,设为当前的父文件夹 

                    currentParent = currentFiles[position]; 

                    // 保存当前的父文件夹内的全部文件和文件夹 

                    currentFiles = tem; 

                    // 再次更新ListView 

                    inflateListView(currentFiles); 

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,