一。 本组课题

简易文件资源管理器

需求分析

  1. 查找文件功能:可以根据指定的目录名与待查找的文件,在指定目录中进行查找,并返回结果
  2. 实现文件的拷贝与粘贴功能
  3. 实现文本类文件(.txt, .java, .ini, .bat, )的预览功能(比如实现对前100行文本在某个小窗口中进行预览)
  4. 实现文件的重命名功能
  5. 实现对某个文件夹进行统计功能(如统计文件夹中文件数目)

    在安卓系统上实现

本人任务

1. 对文件及文件夹进行拷贝和剪切的功能。

二. 总体设计(概要设计)

主要设计为Folder类和Filel类



Folder类

提供绝对路径为参数获取对象

可获得目录的各种信息

并提供格式化size数据的方法

Filel类

直接继承File类,简化设计

提供复制文件或为文件夹的方法

APP基于安卓API18

主Activiy继承于ListView直接显示根目录

视图使用Listview与继承自BaseAdapter的自定义适配器组合

适配器getview中使用convertView,holder静态类加快UI流畅性

三. 是西安功能的主要代码块


package test; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; public class File1 extends File{ public File1(String path) {
super(path);
// TODO Auto-generated constructor stub
}
/**
* 复制选择
* @param destDir
* @param delscr
* @return
*/
public boolean copyTo(String destDir,boolean delscr){
File file = new File(super.getPath());
if(file.isDirectory())
return copyDirectory(super.getPath(), destDir,delscr);
else
return copyFile(super.getPath(), destDir,delscr); }
/**
* 复制文件
* @param scrPath
* @param destDir
* @param delscr
* @return
*/
private boolean copyFile(String scrPath, String destDir,boolean delscr) {
boolean flag = false;
File file = new File(scrPath);
String filename =file.getName();
String destPath ;
if(destDir.equals("/")){
destPath = destDir+filename;
}
else{
destPath = destDir+"/"+filename;
}
File destFile = new File(destPath);
if(destFile.exists()&&destFile.isFile()){
System.out.println("目标目录下已有同名文件");
return false;
}
File newfile = new File(destPath);
try{
FileInputStream fis = new FileInputStream(scrPath);
FileOutputStream fos = new FileOutputStream(newfile);
byte[]buf =new byte[1024];
int c;
while((c=fis.read(buf))!=-1){
fos.write(buf,0,c);
}
fis.close();
fos.close();
flag=true;
}catch(IOException e){ }
if(flag){
System.out.println("复制成功");
}
if(delscr == true){
file.delete();
}
return flag;
}
/**
* 复制文件夹
* @param scrPath
* @param destDir
* @param delscr
* @return
*/
private boolean copyDirectory(String scrPath, String destDir,boolean delscr) {
boolean flag = false;
File scrFile = new File(scrPath);
String dirName = scrFile.getName();
String destPath ;
if(destDir.equals("/")){
destPath = destDir+dirName;
}
else{
destPath = destDir+"/"+dirName;
}
File[] files = scrFile.listFiles();
File desdir = new File(destPath);
if(desdir.exists()&&desdir.isDirectory()){
return false;
}
desdir.mkdir();
for(File f:files){
if(f.isDirectory()){
copyDirectory(f.getPath(),desdir.getPath(),delscr);
}
if(f.isFile()){
copyFile(f.getPath(),destPath,delscr);
flag = true;
} }
if(delscr == true){
scrFile.delete();
}
return flag;
}
}

四. 功能运行的成功界面











《Java课程设计》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. 关于div+css排版布局中需注意的细节问题

    第一个注意点:选择器的使用(标签.class.id) 三种选择器中id(#)的优先级最高,根据id名筛选出唯一元素: 如下输入:#menu{ width:1200px; height:45px; ba ...

  2. Azkaban3.x集群部署(multiple executor mode)

    介绍 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于 ...

  3. 自定义DialogAlert消息框

    效果: 一.新建类CommomDialog 继承Dialog public class CommomDialog extends Dialog implements View.OnClickListe ...

  4. Android NDK Application.mk(中文翻译)

    作者:阿宝 更新:2016-08-31 来源:彩色世界(https://blog.hz601.org/2016/07/26/android-NDK-application-mk/index.html) ...

  5. js获取select下拉框选中的的值和判断checkbox是否选中状态

    html: <select id="lib_select"  name="">   <option   value="1" ...

  6. ARM处理器架构的Thumb指令集中关于IT指令的使用

    在ARMv6T2以及ARMv7架构扩展了Thumb指令集,其中加入了IT指令,进一步增强了代码的紧凑性. Thumb中有一个比较有意思的指令--IT,这条指令用于根据指定的条件来执行后面相继的四条指令 ...

  7. vc++6.0修改字体

    近期在使用vc++6.0写C程序 问题:vc++自带的字体不太好看 解决办法:修改注册表 1. win+r 运行 regedit 调出注册表编辑器 进入到目录 HKEY_CURRENT_USER\SO ...

  8. Ecshop商品描述上传中文名图片无法显示解决方法

    在后台上传商品图片的时候,如果你选择一个中文名称的图片,那么上传后会产生乱码,导致图片显示不出来. 下面说一种解决办法:使用"年月日时分秒 + 6个随机字符"做为文件名,如 201 ...

  9. MyEclipse 2014各种优化设置

    各种优化大整合,陆续更新使用中的问题,也欢迎大家提问. 1.通用优化设置:字体,UTF-8编码格式设置: http://jingyan.baidu.com/article/b907e627d2c5da ...

  10. 用户管理-linux基础

    用户管理 useradd -u -g -G(附加组) ,-c -d -s -r(创建系统用户)   -M (不创建家目录)    思考:删除user1用户家目录,如何还原.        可以#cp ...