一。 本组课题

简易文件资源管理器

需求分析

  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. 关于JS中数组的分析操作

    JS数组的基础操作代码: <script type="text/javascript">        数组的三种定义    var arr1 = new Array( ...

  2. 剑指OFFER的跳台阶问题

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. (斐波那契数列的变形) F(1)=1;F(2)=2; F(n)=F(n-1)+F(n-2); class S ...

  3. HTML-CSS相关(1)

    一  浮动 1.标准流中的块级盒子,宽度将会自动伸展为100%而浮动的块级盒子,宽度不会自动伸展,而是由内容撑开. 2.当一个盒子浮动,标准流中未浮动的其他盒子,将视浮动盒子不存在而占据浮动盒子原来的 ...

  4. ACM做题过程中的一些小技巧

    1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long long或__int64型(两个下 ...

  5. C#使用Xamarin开发可移植移动应用(5.进阶篇显示弹出窗口与通讯中心)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 没啥好说的 ...

  6. css3布局属性flex

    html代码如下: <ul class="ul_box"> <li><a href="#">html</a>&l ...

  7. java微信公众平台开发

    微信公众平台的开发,总体说来也是简单的,就是先大概看下微信公众平台接口文档. 请先大概浏览一下API手册,我们会发现,推送给微信服务器的数据有两种:xml的形式,和json的形式. 那么什么时候是XM ...

  8. FxZ,C#开发职位面试测试题(30分钟内必须完成)

    1. Refactor the following code (C#) to use polymorphism instead of if-else. Please provide your answ ...

  9. 【Spring】XML配置整合Mybatis

    注意:项目开发使用了mybatis的mapper代理! 首先是mybatis自己的配置文件,被spring整合之后,只有typeAliases存在了,其他都整合在了spring-mybatis.xml ...

  10. Ext.grid.EditorGridPanel保存

    用get方法传递编辑的数据会出现乱码,解决get乱码的方法就是encodeURI(param),然后在后台转码: String strJson =  new String(request.getPar ...