国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android開發(fā)之簡單文件管理器實現(xiàn)方法

2020-04-11 11:03:16
字體:
供稿:網(wǎng)友

本文實例講述了Android開發(fā)之簡單文件管理器實現(xiàn)方法。分享給大家供大家參考,具體如下:

這里運用Java I/O、ListActivity、Dialog、Bitmap等實現(xiàn)簡單文件管理器,可以查看目錄文件,修改文件名,刪除文件,打開文件。比較簡單,直接看代碼:

先看布局文件:

layout/main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>

文件列表布局:

layout/file.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" ><ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content"/><TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp"></TextView></LinearLayout>

修改文件名對話框布局文件:

layout/rename_dialog.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText  android:id="@+id/editText"  android:layout_width="match_parent"  android:layout_height="wrap_content" /></LinearLayout>

主Activity:

public class MainActivity extends ListActivity { private static final String ROOT_PATH = "/"; //存儲文件名稱 private ArrayList<String> names = null; //存儲文件路徑 private ArrayList<String> 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<String>();  paths = new ArrayList<String>();  File file = new File(path);  File[] files = file.listFiles();  //如果當(dāng)前目錄不是根目錄  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);   }  }  //沒有權(quán)限  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); } //對文件進(jìn)行增刪改 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("請選擇要進(jìn)行的操作!")  .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();  //文件擴(kuò)展名  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<String> names = null; //存儲文件路徑 private ArrayList<String> paths = null; //參數(shù)初始化 public MyAdapter(Context context,ArrayList<String> na,ArrayList<String> 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); }}

因為要對文件進(jìn)行操作,所以在描述文件中授權(quán):

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"  package="com.test.filemanager"  android:versionCode="1"  android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <strong> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></strong> <application android:icon="@drawable/icon" android:label="@string/app_name">  <activity android:name=".MainActivity"     android:label="@string/app_name">   <intent-filter>    <action android:name="android.intent.action.MAIN" />    <category android:name="android.intent.category.LAUNCHER" />   </intent-filter>  </activity> </application></manifest>

運行結(jié)果如下:

查看目錄文件

文件重命名:

刪除文件:

打開文件:

希望本文所述對大家Android程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黎平县| 吉木乃县| 高要市| 苍溪县| 遂昌县| 太仓市| 东丰县| 滦南县| 成武县| 喀喇沁旗| 博客| 政和县| 玛多县| 兴和县| 阿瓦提县| 墨脱县| 黎川县| 平南县| 波密县| 嘉黎县| 榆中县| 墨竹工卡县| 眉山市| 鲁山县| 靖江市| 阜康市| 建水县| 临沭县| 闻喜县| 潼关县| 尤溪县| 香格里拉县| 九龙坡区| 阿拉善右旗| 航空| 敦煌市| 泰州市| 三原县| 桐城市| 保德县| 香港|