Android开发之简单文件管理器实现方法

这篇文章主要介绍了Android开发之简单文件管理器实现方法,简单实现了Android的文件目录查看,文件重命名,打开,删除等功能,需要的朋友可以参考下

本文实例讲述了Android开发之简单文件管理器实现方法。分享给大家供大家参考,具体如下:

这里运用Java I/O、ListActivity、Dialog、Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件。比较简单,直接看代码:

先看布局文件:

layout/main.xml

   

文件列表布局:

layout/file.xml

    

修改文件名对话框布局文件:

layout/rename_dialog.xml

   

主Activity:

 public class MainActivity extends ListActivity { private static final String ROOT_PATH = "/"; //存储文件名称 private ArrayList names = null; //存储文件路径 private ArrayList paths = null; private View view; private EditText editText; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //显示文件列表 showFileDir(ROOT_PATH); } private void showFileDir(String path){ names = new ArrayList(); paths = new ArrayList(); File file = new File(path); File[] files = file.listFiles(); //如果当前目录不是根目录 if (!ROOT_PATH.equals(path)){ names.add("@1"); paths.add(ROOT_PATH); names.add("@2"); paths.add(file.getParent()); } //添加所有文件 for (File f : files){ names.add(f.getName()); paths.add(f.getPath()); } this.setListAdapter(new MyAdapter(this,names, paths)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { String path = paths.get(position); File file = new File(path); // 文件存在并可读 if (file.exists() && file.canRead()){ if (file.isDirectory()){ //显示子目录及文件 showFileDir(path); } else{ //处理文件 fileHandle(file); } } //没有权限 else{ Resources res = getResources(); new AlertDialog.Builder(this).setTitle("Message") .setMessage(res.getString(R.string.no_permission)) .setPositiveButton("OK",new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); } super.onListItemClick(l, v, position, id); } //对文件进行增删改 private void fileHandle(final File file){ OnClickListener listener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 打开文件 if (which == 0){ openFile(file); } //修改文件名 else if(which == 1){ LayoutInflater factory = LayoutInflater.from(MainActivity.this); view = factory.inflate(R.layout.rename_dialog, null); editText = (EditText)view.findViewById(R.id.editText); editText.setText(file.getName()); OnClickListener listener2 = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub String modifyName = editText.getText().toString(); final String fpath = file.getParentFile().getPath(); final File newFile = new File(fpath + "/" + modifyName); if (newFile.exists()){ //排除没有修改情况 if (!modifyName.equals(file.getName())){ new AlertDialog.Builder(MainActivity.this) .setTitle("注意!") .setMessage("文件名已存在,是否覆盖?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (file.renameTo(newFile)){ showFileDir(fpath); displayToast("重命名成功!"); } else{ displayToast("重命名失败!"); } } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } } else{ if (file.renameTo(newFile)){ showFileDir(fpath); displayToast("重命名成功!"); } else{ displayToast("重命名失败!"); } } } }; AlertDialog renameDialog = new AlertDialog.Builder(MainActivity.this).create(); renameDialog.setView(view); renameDialog.setButton("确定", listener2); renameDialog.setButton2("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); renameDialog.show(); } //删除文件 else{ new AlertDialog.Builder(MainActivity.this) .setTitle("注意!") .setMessage("确定要删除此文件吗?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if(file.delete()){ //更新文件列表 showFileDir(file.getParent()); displayToast("删除成功!"); } else{ displayToast("删除失败!"); } } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); } } }; //选择文件时,弹出增删该操作选项对话框 String[] menu = {"打开文件","重命名","删除文件"}; new AlertDialog.Builder(MainActivity.this) .setTitle("请选择要进行的操作!") .setItems(menu, listener) .setPositiveButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); } //打开文件 private void openFile(File file){ Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); String type = getMIMEType(file); intent.setDataAndType(Uri.fromFile(file), type); startActivity(intent); } //获取文件mimetype private String getMIMEType(File file){ String type = ""; String name = file.getName(); //文件扩展名 String end = name.substring(name.lastIndexOf(".") + 1, name.length()).toLowerCase(); if (end.equals("m4a") || end.equals("mp3") || end.equals("wav")){ type = "audio"; } else if(end.equals("mp4") || end.equals("3gp")) { type = "video"; } else if (end.equals("jpg") || end.equals("png") || end.equals("jpeg") || end.equals("bmp") || end.equals("gif")){ type = "image"; } else { //如果无法直接打开,跳出列表由用户选择 type = "*"; } type += "/*"; return type; } private void displayToast(String message){ Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); } } 

自定义适配器:

 public class MyAdapter extends BaseAdapter{ private LayoutInflater inflater; private Bitmap directory,file; //存储文件名称 private ArrayList names = null; //存储文件路径 private ArrayList paths = null; //参数初始化 public MyAdapter(Context context,ArrayList na,ArrayList pa){ names = na; paths = pa; directory = BitmapFactory.decodeResource(context.getResources(),R.drawable.d); file = BitmapFactory.decodeResource(context.getResources(),R.drawable.f); //缩小图片 directory = small(directory,0.16f); file = small(file,0.1f); inflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return names.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return names.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if (null == convertView){ convertView = inflater.inflate(R.layout.file, null); holder = new ViewHolder(); holder.text = (TextView)convertView.findViewById(R.id.textView); holder.image = (ImageView)convertView.findViewById(R.id.imageView); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } File f = new File(paths.get(position).toString()); if (names.get(position).equals("@1")){ holder.text.setText("/"); holder.image.setImageBitmap(directory); } else if (names.get(position).equals("@2")){ holder.text.setText(".."); holder.image.setImageBitmap(directory); } else{ holder.text.setText(f.getName()); if (f.isDirectory()){ holder.image.setImageBitmap(directory); } else if (f.isFile()){ holder.image.setImageBitmap(file); } else{ System.out.println(f.getName()); } } return convertView; } private class ViewHolder{ private TextView text; private ImageView image; } private Bitmap small(Bitmap map,float num){ Matrix matrix = new Matrix(); matrix.postScale(num, num); return Bitmap.createBitmap(map,0,0,map.getWidth(),map.getHeight(),matrix,true); } } 

因为要对文件进行操作,所以在描述文件中授权:

       

运行结果如下:

查看目录文件

文件重命名:

删除文件:

打开文件:

希望本文所述对大家Android程序设计有所帮助。

以上就是Android开发之简单文件管理器实现方法的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 移动