最新消息:欢迎访问Android开发中文站!商务联系微信:loading_in

SD卡浏览器实例

源码下载 AndroidChina 2734浏览 0评论

SD卡大家都不陌生,我们在写程序时也会将一些缓存文件,临时文件写入到SD卡上,今天就简单来实现一个SD卡浏览器,用来查看SD卡中的文件。

读写权限

如果要操作SD卡的内容,首先需要赋予权限,否则是否对SD卡进行读写的。
代码:


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

加载SD卡内容

这里是通过一个列表来展示出SD卡中所有的文件,如图所示

04_sdcard

读取代码:


// 分类并排序
File[] temp = directory.listFiles();
ArrayList<File> tempFolder = new ArrayList<File>();
ArrayList<File> tempFile = new ArrayList<File>();
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<File> comparator = new MyComparator();
Collections.sort(tempFolder, comparator);
Collections.sort(tempFile, comparator);

这里实现了一个比较器,用来排序文件,这里是按照名字排序。

删除和重命名

还提供了删除文件和重命名的功能,在一个文件上长按就会弹出如下界面:

04_sdcard2

点击重命名,会弹出对话框输入新的名字:

04_sdcard3

代码实现:


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;
      }

});

新建和退出

同样也提供了新建文件和退出程序的功能,如图:

04_sdcard4

代码实现:


@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);
}

源码下载:点击下载

转载请注明:Android开发中文站 » SD卡浏览器实例

您必须 登录 才能发表评论!