Android用File類寫一個簡單的檔案管理軟體
一,概要:
Android中的File類和JAVA中File類是一樣的,方法也可以去看看java的API(點選檢視)。這裡補充幾點:
File file=this.getFilesDir(); //當前應用資料預設的資料儲存路勁:/data/user/0/com.maeeage.administrator.androidlearn/files i("getFilesDir--->",file.getAbsolutePath()); File file1=this.getCacheDir(); //當前應用資料預設的資料快取儲存路勁:/data/user/0/com.maeeage.administrator.androidlearn/cache // 可以把一些不是非常重要的檔案放在這裡, // 如果手機記憶體不足,系統會自動刪除App的Cache目錄下的資料 i("getCacheDir--->",file1.getAbsolutePath()); File file2=this.getDir("file2",MODE_PRIVATE); //自定義目錄:/data/user/0/com.maeeage.administrator.androidlearn/app_file2 i("getDir()--->",file2.getAbsolutePath()); // File file3=this.getExternalCacheDir(); //得到外部的儲存位置,該位置的資料與內建的使用時一樣的: // /storage/emulated/0/Android/data/com.maeeage.administrator.androidlearn/cache i("getExternalCacheDir--->",file3.getAbsolutePath()); File file4=this.getExternalFilesDir("file4"); //在外部自定義的:storage/emulated/0/Android/data/com.maeeage.administrator.androidlearn/files/file4 i("getExternalFilesDir--->",file4.getAbsolutePath()); //如果開發者按照上述儲存資料,在App寫在後,資料也會跟著清除。
以上程式碼執行結果:
二,小demo
1,先看效果:
2,檢視層:
file_manager.xml:
item_file.xml:(ImageView的背景是用來區分是檔案還是目錄的)<?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" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/file_title" android:layout_width="match_parent" android:layout_height="30dp" android:text="檔案管理" android:gravity="center" /> </LinearLayout> <ListView android:id="@+id/file_listview" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </LinearLayout>
<?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"> <ImageView android:id="@+id/file_image" android:background="@drawable/isdictionary" android:layout_width="30dp" android:layout_height="30dp" android:layout_margin="5dp" /> <TextView android:id="@+id/filename" android:layout_width="35dp" android:layout_height="35dp" android:gravity="center" android:layout_weight="10.5"/> <TextView android:id="@+id/isDictionary" android:layout_width="35dp" android:layout_height="35dp" android:gravity="center_horizontal" /> </LinearLayout>
3,邏輯層:
package com.maeeage.administrator.androidlearn.filemanager;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.maeeage.administrator.androidlearn.R;
import com.maeeage.administrator.androidlearn.adapter.FileAdapter;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2018/2/5/005.
*/
public class FileManager extends Activity {
ListView listView;
TextView title;
String dir;
//用存放路勁
FileAdapter adapter;
//介面卡
List<File> dateList;
//File 資料
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.file_manager);
findVById();
init();
//初始化
}
private void findVById() {
listView=(ListView)findViewById(R.id.file_listview);
title=(TextView)findViewById(R.id.file_title);
}
//初始化
private void init() {
Intent intent=getIntent();
//獲取Intent的,接收activity傳來的值,
dir= intent.getStringExtra("dir");
//如果為null,dir的值為 :Environment.getExternalStorageDirectory().getAbsolutePath();
//這個路勁就是一般開啟手機檔案管理檔案目錄的路勁
if (dir!=null)
;
else
dir= Environment.getExternalStorageDirectory().getAbsolutePath();
//獲取title:讓其顯示檔案路勁:如Android>data>com......
if(intent.getStringExtra("title")!=null)
title.setText(intent.getStringExtra("title"));
else
title.setText("檔案管理");
//為listView註冊上下文選單,當長按某一個檔案出現選單:
this.registerForContextMenu(listView);
dateList=new ArrayList<>();
adapter=new FileAdapter(this,getDate());
listView.setAdapter(adapter);
//listView 點選事件,當點選的檔案為目錄時,
// 把dir的值賦值為:dir+點選的目錄,再次跳到此頁,既可以達到迴圈,不要再去新建一個activity在現實:
// intent.putExtra("dir",dir+"/"+dateList.get(i).getName());
//intent.putExtra("title",title.getText()+">"+dateList.get(i).getName());
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if(dateList.get(i).isDirectory())
{
Intent intent=new Intent(FileManager.this,FileManager.class);
intent.putExtra("dir",dir+"/"+dateList.get(i).getName());
intent.putExtra("title",title.getText()+">"+dateList.get(i).getName());
startActivity(intent);
}
}
});
}
//為上下文選單新增選單項
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("檔案操作");
menu.setHeaderIcon(R.drawable.ic_brightness_high_black_24dp);
menu.add(1,1,1,"複製");
menu.add(1,2,1,"貼上");
menu.add(1,3,1,"剪下");
menu.add(1,4,1,"重新命名");
}
//選中選單項點選事件,這裡就Toast一下,
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case 1:
Toast.makeText(FileManager.this,"已複製",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(FileManager.this,"已貼上",Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(FileManager.this,"剪下",Toast.LENGTH_SHORT).show();
break;
case 4:
Toast.makeText(FileManager.this,"重新命名",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
//獲取dir下所有的檔案
public List< File> getDate() {
File file=new File(dir);
if(file.exists())
{
File[] file1=file.listFiles();
for (File filename :
file1) {
dateList.add(filename);
}
}
return dateList;
}
}
FileAdapter.java(介面卡):
package com.maeeage.administrator.androidlearn.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.maeeage.administrator.androidlearn.R;
import java.io.File;
import java.util.List;
/**
* Created by Administrator on 2018/2/5/005.
*/
public class FileAdapter extends BaseAdapter {
//傳遞File資料和上下文;
List<File> list;
Context context;
public FileAdapter(Context context,List<File> list) {
this.list = list;
this.context=context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view= View.inflate(context,R.layout.item_file,null);
File file=list.get(i);
ImageView image_photo= (ImageView) view.findViewById(R.id.file_image);
TextView tv_name= (TextView) view.findViewById(R.id.filename);
TextView tv_age= (TextView) view.findViewById(R.id.isDictionary);
//如果某個檔案是目錄:就在後面顯示》;否則顯示空
if (file.isDirectory()){
tv_age.setText("▶");
image_photo.setImageResource(R.drawable.isdictionary);
}
else {
tv_age.setText(" ");
image_photo.setImageResource(R.drawable.notdictionary);
}
tv_name.setText(file.getName());
return view;
}
}
三,總結:
掌握File的對軟體開發很重要的!好好練習!
相關推薦
Android用File類寫一個簡單的檔案管理軟體
一,概要: Android中的File類和JAVA中File類是一樣的,方法也可以去看看java的API(點選檢視)。這裡補充幾點: File file=this.getFilesDir(); //當前應用資料預設的資料儲存路勁:/data/user/0
用類寫一個簡單的通訊錄
#include <iostream> #include <string> using namespace std; class addressbook { private: string Name; string Num; string Ad
用python語言寫一個簡單的計算器
ali pla ket 列表 調用 語言 括號 lac 跳出循環 假如我們有這樣一個式子: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )思
用C語言寫一個簡單的三子棋,實現玩家與電腦的對戰
原始碼: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 寫一個三子棋 */ //邏輯: //1. 畫
用C語言寫一個簡單的掃雷小遊戲
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 語言寫一個簡單的掃雷遊戲 */ // 1.寫一個遊戲選單 M
python進階-用Tkinter/mysqldb寫一個簡單的酒店預定GUI介面
學了python的部分庫和基本語法後,結合資料庫操作,做一個簡單的使用者友好介面實現一個簡單的酒店預訂小系統。 準備姿勢 tkinter的元件轉換 tkinter按鈕元件詳解 Python連線資料庫操作 資料庫準備 在本地資料庫新建一個hotel_data的資料庫,建立四張表。
Java不使用calendar類和其餘的類 只調用Scanner類寫一個日曆
作業題目 java起步,小白一個,只是分享心得和加深印象 ********************************************************************************* 作業要求 構建無參的函式和有參的函式分別輸出每年的
用java程式碼寫一個簡單的網上購物車程式
需求:1、寫一個商品類,有商品編號、商品名稱、商品分類、商品單價屬性。2、寫一個商品條目資訊類,有商品和數量兩個屬性,有商品總價格方法。 3、寫一個購物車類,有新增商品方法、檢視訂單資訊,刪除商品,修改商品,清空購物車,求購物車中所有商品總金額方法。4、寫一個測試類,測試上
用Java GUI做一個簡單的管理系統
java 管理系統 gui 1.先完成主頁面MainUI(代碼如下)package com.pag_1; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.
用android studio寫一個簡單並且bug奇多的計算器
思路:先佈局,在將相應的按鍵例項化,建立監聽器,計算。可以說是非常簡單了。 貼一下程式碼: 佈局程式碼: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas
用python寫一個簡單的爬蟲儲存在json檔案中
學習python沒多久,所以只能寫一個很簡單的爬蟲啦~~ 我使用annacada 自帶的spyder來寫爬蟲的,這次我們要爬取得網站是http://www.drugbank.ca/drugs, 主要是爬取裡面每種藥物的資訊到json檔案中,包括有 DrugBank ID,
用java類和物件寫一個簡單的回合制對戰遊戲
一、什麼是物件,什麼是類類比現實生活,任何一個具體的事物都可以稱為物件,比如某臺電腦,某本書,某個人……而類就是根據物件相似的特徵和功能進行分類,物件是具體的,類是抽象的。二、類的基本格式public class 類名 {//定義屬性訪問修飾符 資料型別 屬性名;//定義
采用jsp頁面與java代碼分離的方式寫一個簡單的二維表
color arraylist 一個 3-9 業務 動態顯示 復雜 分層架構 方式 前提:在我們做程序時追求的是高內聚,低耦合,但是如果我們把jsp頁面的的代碼和java的代碼都放在了jsp的代碼編寫中,使java和jsp高耦合這樣的話不僅使jsp代碼頁面顯得很復雜,而
用集合寫一個簡單的隨機分組,以及集合內元素數量查詢
移除 以及 表示 元素 move spa color 查詢 println 12個人,隨機分為4組 public static void main(String[] args) { List list = new ArrayList();
用python寫一個簡單的excel表格獲取當時的linux系統信息
psutil 生成 之前 建立 set ces ext 流量 關閉 最近在學習excel表格的制作,順便結合之前學習的內容,利用python的兩個模板,分別是獲取系統信息的psutil,和生成excel表格的xlsxwriter。利用這兩個模板將生成一個簡單的excel表格
用Canvas寫一個簡單的遊戲--別踩白塊兒
來吧 ber -c [] for 輸入 itl event 內部 第一次寫博客也不知怎麽寫,反正就按照我自己的想法來吧!怎麽說呢?還是不要扯那些多余的話了,直接上正題吧! 第一次用canvas寫遊戲,所以挑個簡單實現點的來幹:別踩白塊兒,其他那些怎麽操作的那些就不用再扯
用shell寫一個簡單的告警系統
shell用shell寫一個簡單的告警系統 創建目錄結構 mkdir -p /usr/local/sbin/mon/{bin,conf,shares,mail,log} mon //主目錄 bin //主程序目錄 shares //子程序目錄 mail //發郵件目錄 log //日誌目錄 程序主入
用JavaScript寫一個簡單的計算器
res scroll ref 簡單的 精度 arguments alt inf create 本文使用js實現了一個簡單的加、減、乘、除計算器。 以下是css部分代碼: *{ padding:0; margin:0; color: #424242;
寫一個簡單的網站檔案管理器
一時不知道從何說起了,網站檔案管理器滿天飛的,所以,純粹是閒的蛋疼,才會做這個,對於我來說,這就是打遊戲。 1.仿win7介面 2.仿win7操作 3.上傳,下載,分享檔案,這麼說起來,就像是一個個人網盤了。 製作過程有點懶得說了,目前是做到可以瀏覽檔案,切換目錄這樣 用我的Vue元件載入做的,
用socket寫一個簡單的聊天程式
服務端程式碼: # 建立socket物件:socket.socket()——>繫結IP地址和埠:bind——>監聽:listen——># 得到請求:accept——>接收請求:recv——>傳送資訊:send——>關閉close i