android 文件管理器:
功能列表:
1: 實現了在ListView中瀏覽本地全部文件.
2: 實現了對文件的增(新建文件夾)
3: 刪(刪除文件或文件夾).
4: 改(重命名以及複製粘貼文件).
5: 查(對當前路徑下的遞歸查詢).
6: 排(對顯示在listView中的文件按時間,大小或文件名排序).
總體思路:
大概的思路是首先遍歷本地全部文件的根目錄,而後經過使用棧結構存儲文件路徑,由於出棧入棧的特性很適合處理隨着用戶操做不斷推出存入的文件路徑,以後增刪改查的具體實如今下文都有詳細解釋以及縮略圖,總共花費大概10個小時,也是完成了任務。
實現原理:
使用了棧結構保存當前的文件路徑,每一次點擊文件夾,就會把當前文件名推入棧組成新的文件路徑。
實現獲得當前棧路徑的方法:android
//獲得當前棧路徑的String private String getPathString() { Stack<String> temp = new Stack<>(); temp.addAll(nowPathStack); String result = ""; while (temp.size() != 0) { result = temp.pop() + result; } return result; }
在item的onItemClick方法中將點擊的文件名推入棧:ide
//若是是文件夾 // 清除列表數據 // 得到目錄中的內容,計入列表中 // 適配器通知數據集改變 nowPathStack.push("/" + file.getName()); showChangge(getPathString());
顯示改變路徑以後的listview文件列表:ui
//顯示改變data以後的文件數據列表 private void showChangge(String path) { showtv.setText(path); files = new File(path).listFiles(); data.clear(); for (File f : files) { data.add(f); } files = fileAdapter.setfiledata(data); }
實現原理:
根據當前路徑,以及經過dialog獲得的用戶輸入的文件名執行新建文件夾的操做:this
/** * 建立新文件夾 */ private void doCreateNewFolder() { mydialog = new AlertDialog.Builder(MainActivity.this).create(); mydialog.show(); mydialog.getWindow().setContentView(R.layout.newfloder_dialog); mydialog.setView(new EditText(MainActivity.this)); //加入下面兩句之後便可彈出輸入法 mydialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); mydialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); newfloder_name = (EditText) mydialog.getWindow().findViewById(R.id.newfloder_name); mydialog.getWindow() .findViewById(R.id.newfloder_cancle) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mydialog.dismiss(); } }); mydialog.getWindow() .findViewById(R.id.newfloder_create) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = newfloder_name.getText().toString(); if (name != null) { File folder = new File(getPathString() + "/" + name); folder.mkdirs(); if (folder.exists()) { Toast.makeText(MainActivity.this,"文件:"+name + " 建立成功",Toast.LENGTH_SHORT).show(); showChangge(getPathString()); mydialog.dismiss(); } } } }); }
這裏是對其中部分功能的核心代碼進行顯示。code