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 ,