博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 编程之入门开发目录管理器开发文件事件操作-2
阅读量:6340 次
发布时间:2019-06-22

本文共 3552 字,大约阅读时间需要 11 分钟。

上一篇博客,我们已经得到了目录列表,我们须要对文件列表子项加入事件,比方我们点击的是文件。就运行

打开操作,点击的是目录运行打开目录操作,遍历文件清单。以此类推直到最后一个是文件位置,关于文件

与目录的处理后面会讲到

在我的程序里。我写了一个类。对文件进行处理。FileOpreationUitl:

package com.example.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.Context;import android.util.Log;import android.widget.Toast;/** * 文件的操作类 * @author Engineer-Jsp * @date 2014.10.27 */public class FileOpreationUitl {	public static Map
mp3_List=new HashMap
(); public static List
>mp3_data=new ArrayList
>(); public static String mp3_listitem;// public static Map
picture_List=new HashMap
(); public static List
>picture_data=new ArrayList
>(); public static String picture_listitem;// public static Map
video_List=new HashMap
(); public static List
> video_data=new ArrayList
>(); public static String video_listitem; //删除文件和文件夹 public void deleteFile(File path){ //假设传来的參数path是文件,直接运行删除操作 if(path.isFile()){ //删除 path.delete(); //否则为文件夹,运行以下的操作 }else{ //定义文件数组接收參数Path文件夹的文件列表 File[] files=path.listFiles(); //循环编历文件 for(File f : files){ //假设是文件运行 if(f.isFile()){ //删除 f.delete(); }else{ //调用自己递归 deleteFile(f); } } //删除文件夹 path.delete(); } } //拷贝文件 public void copyFile(File currentpath,File srcpath){ File newFile=new File(srcpath, currentpath.getName()); if(!newFile.exists()){ try { newFile.createNewFile(); FileInputStream fileinput=new FileInputStream(currentpath); FileOutputStream fileout=new FileOutputStream(newFile); byte[] byt=new byte[1024 * 16]; int length=0; while((length=fileinput.read(byt))!=-1){ fileout.write(byt,0,length); } fileinput.close(); fileout.close(); } catch (IOException e) { e.printStackTrace(); } }// else{// newFile.delete();// copyFile(currentpath, srcpath);// } } //拷贝文件夹 public void copyDirectory(File currentpath,File srcpath){ if(currentpath.isFile()){ copyFile(currentpath, srcpath); }else{ File file=new File(srcpath, currentpath.getName()); if(!file.exists()){ file.mkdir(); }// else{// file.delete();// } File[] files=currentpath.listFiles(); for(File f : files){ copyDirectory(f, file); } //删除文件夹// currentpath.delete(); } } //新建 public void newFile(File currentpath){ if(!currentpath.exists()){ currentpath.mkdirs(); } } //音乐分类 /** * * @param groupPath 假设你想获取SDcard以下的所以mp3文件你就填sdcard路径 * 用的是递归的方式获取 */ public void getReciver(File mp3_Path){ //循环获取sdcard文件夹以下的文件夹和文件 for(int i=0; i< mp3_Path.listFiles().length; i++){ File childFile = mp3_Path.listFiles()[i]; //假如是文件夹的话就继续调用getSDcardFile()将childFile作为參数传递的方法里面 if(childFile.isDirectory()){ getReciver(childFile); }else{ //假设是文件的话,推断是不是以.mp3结尾,是就增加到List里面 if(childFile.toString().endsWith(".mp3")){ mp3_List.put(mp3_listitem,childFile.getName().toString()); mp3_data.add(mp3_List); //打印文件的文件名称 System.out.println(childFile.getName()); Log.d("XXXXXXXXXX",childFile.getName()); //打印文件的路径 System.out.println(childFile.getAbsolutePath()); Log.d("XXXXXXXXXX",childFile.getAbsolutePath()); } } } } //图片分类 public void getPicture(File picture_Path){ //循环获取sdcard文件夹以下的文件夹和文件 for(int i=0; i
配合 MultiChoiceModeListener 运行多选,优于 setChoiceMode 单选,让application能够运行批量的操作处理,包含复制、删除等,以下看看效果:

运行新建測试,点击右上角小+号:

点击确定。生成目录,刷新列表:

以下看看批量复制操作,长按ListView Item,右上角小+号消失。生成删除button和复制button,点击Item选中,更改选中Item项背景颜色:

运行批量粘贴,这里我仅仅点了5项。所以仅仅粘贴了5个目录。大家注意看右上角图标,又恢复到了没有复制操作的时候的图标,事实上在点击复制button之后,会加入一个粘贴button,粘贴完后消失:

批量删除操作:

文件操作大概就写了这些,有须要的能够自己拓展,我这里主要是方便大伙学习,谢谢~

你可能感兴趣的文章
java 发送带cookie的http请求
查看>>
我的友情链接
查看>>
2、【华为HCIE-Storage】--DAS NAS SAN
查看>>
一个线程池例子
查看>>
configure: error: Cannot find OpenSSL's libraries
查看>>
2.5-搭建本地yum仓库
查看>>
OSPF基础知识
查看>>
zookeeper安装部署
查看>>
RHEL6 preinstall for oracle
查看>>
Corrupt Block
查看>>
centos6——初始化脚本
查看>>
linux I/O优化 磁盘读写参数设置
查看>>
中断处理 I/O内存
查看>>
Java中的transient关键字
查看>>
私有网盘nextcloud 12的问题处理及优化
查看>>
思科设备VLAN之间通信配置
查看>>
mysql排错 (一)
查看>>
CCSP Official (ISC)2 Practice Tests
查看>>
python访问ftp站点,上传文件
查看>>
hql语句中根据时间查询数据
查看>>