SD卡大家都不陌生,我们在写程序时也会将一些缓存文件,临时文件写入到SD卡上,今天就简单来实现一个SD卡浏览器,用来查看SD卡中的文件。
读写权限
如果要操作SD卡的内容,首先需要赋予权限,否则是否对SD卡进行读写的。
代码:
加载SD卡内容
这里是通过一个列表来展示出SD卡中所有的文件,如图所示
读取代码:
// 分类并排序
File[] temp = directory.listFiles();
ArrayList tempFolder = new ArrayList();
ArrayList tempFile = new ArrayList();
for (int i = 0; i < temp.length; i++) {
File file = temp[i];
if (file.isDirectory()) {
tempFolder.add(file);
} else if (file.isFile()) {
tempFile.add(file);
}
}
// 对List进行排序
Comparator comparator = new MyComparator();
Collections.sort(tempFolder, comparator);
Collections.sort(tempFile, comparator);
这里实现了一个比较器,用来排序文件,这里是按照名字排序。
删除和重命名
还提供了删除文件和重命名的功能,在一个文件上长按就会弹出如下界面:
点击重命名,会弹出对话框输入新的名字:
代码实现:
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView> arg0, View arg1, int arg2, long arg3) {
File clickFile = datas[arg2];
longFile = clickFile;
if (clickFile.isDirectory()) {
menus = new String[] { "删除", "重命名" };
Intent openMenu = new Intent(GetSDTreeActivity.this, MenuActivity.class);
openMenu.putExtra("menus", menus);
startActivityForResult(openMenu, 1);
} else {
menus = new String[] { "删除", "重命名" };
Intent openMenu = new Intent(GetSDTreeActivity.this, MenuActivity.class);
openMenu.putExtra("menus", menus);
startActivityForResult(openMenu, 2);
}
return false;
}
});
新建和退出
同样也提供了新建文件和退出程序的功能,如图:
代码实现:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("新建");
menu.add("退出");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (item.getTitle().toString().equals("退出")) {
GetSDTreeActivity.this.finish();
System.exit(1);
} else if (item.getTitle().toString().equals("新建")) {
String name = System.currentTimeMillis() + "";
File file = new File(nowFile.getPath() + "/" + name.substring(name.length() - 5));
try {
boolean finish = file.createNewFile();
loadFiles(nowFile);
if (finish) {
Toast.makeText(this, "随机文件已生成!", Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return super.onMenuItemSelected(featureId, item);
}
源码下载:点击下载