0 0

java实现以下内容5

Functional Requirement:
The program need scan a given directory and all its children recursively, and find out the top 10 biggest files.
Non-Functional Requirement:
Please use OO design, TDD, design patterns etc. Take care about code style as well.
2014年1月25日 12:05

2个答案 按时间排序 按投票排序

0 0

这个实现很简单,但是要符合TDD和OO Design,我想题主应该是留学生吧,典型的老外出题风格 这里指提供思想:

TDD(测试驱动,JUNIT为例)
class TestFileScanner {
    @Test
    public void testMoreThanTenFiles() {
    } //超过十个文件的情况测测试(创建10个大小不一的文件及文件目录,调用-->Assert
  
    @Test
    public void testLessThanTenFiles(){
    } //小于10个文件的情况下
   
    //单层目录&多层目录等测试用例,不一一列举了。

class TopNFilesViewer {
    private List<File> files;
    public TopNFiles(List<File> files) {this.files = files;}
    public String toString() {
        ToStringBuilder.reflectToString(this.files);//Apache的第三方库,也可以手动组织
    }
}

class FileScanner {
     public List<File> selectTopTenFiles(File directory) throws IOException {
        return this.selectTopNFiles(directory, 10)
     }

     public List<File> selectTopNFiles(File directory, int topNum) throws IOEception {
     ....
     }

     public static void main(String[] args) {
         if(args<1) return;
         String directory = args[0];
        
         System.out.println(new TopNFiles(new FileScanner()
                               .selectTopTenFiles(directory)
                            );
    }
}
    

2014年1月26日 09:13
0 0

public class Test {
/**
* 扫描目录
* @param path
* @param fileList
* @throws Exception
*/
public static void scanDirectory(String path,List<File> fileList) throws Exception{
File file = new File(path);
if(file.isDirectory()){
File[] files = file.listFiles();
for(File f : files){
scanDirectory(f.getAbsolutePath(),fileList);
}
}else{
fileList.add(file);
return;
}
}

/**
* find out the top 10 biggest files
* @param path
* @return
* @throws Exception
*/
public static File[] getBiggestFile(String path)throws Exception{
List<File> fileList = new ArrayList<File>();
//扫描目录
scanDirectory(path, fileList);
File[] fileArr = new File[fileList.size()];
//文件比较
Arrays.sort(fileList.toArray(fileArr), new Comparator<File>() {

public int compare(File o1, File o2) {
return (int)(o2.length() - o1.length());
}

});
return fileArr;
}

public static void main(String[] args) {
String path = "F:\\uploadFile";
try {
File[] fileArr = getBiggestFile(path);
int num = fileArr.length > 10 ? 10 : fileArr.length;
for(int i = 0; i < num; i++){
System.out.println(fileArr[i].getName() + "-------------" + fileArr[i].length());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

2014年1月25日 17:37

相关推荐

    Java基于socket实现的客户端和服务端通信功能完整实例

    Java基于socket实现的客户端和服务端通信功能完整实例 在Java中,Socket是实现网络通信的基础,通过Socket可以实现客户端和服务器端之间的通信。本文将详细介绍Java基于Socket实现的客户端和服务端通信功能,包括...

    java实现视频压缩

    以下是对"java实现视频压缩"这一主题的详细阐述。 首先,我们要理解视频压缩的基本原理。视频是由连续的静态图像(帧)组成的,而压缩的目标是减少这些帧的数据量,以便更有效地存储和传输。常见的压缩方法分为无损...

    java实现课程表

    【Java实现课程表】是一个基于Java编程语言设计的特定于某个学校的教务系统课程表程序。这个程序的主要目的是为了展示如何使用Java技术来构建一个能够显示、管理个人课程的工具。由于不同学校的教务系统差异,这个...

    Sip注册 Java实现

    在Java实现中,`SipApplicationDispatcher`类通常用于处理SIP事件,如请求发送、接收响应等。开发者需要实现相应的监听器接口(如`javax.sip.EventListener`)以处理这些事件。 在提供的压缩包文件`Sip_Java`中,...

    java实现图片上传预览

    以下将详细介绍如何在Java环境中,结合ASP和JSP技术来实现这一功能。 首先,我们需要理解图片上传的基本流程。用户通过浏览器选择图片后,这些图片将以二进制数据的形式发送到服务器。服务器接收到数据后,可以先将...

    java实现对接LED屏

    为了成功实现Java对接LED屏,开发者需要对以下知识有深入理解: - Java语言基础 - JNI原理及使用 - Windows系统上的动态链接库和DLL文件 - C/C++编程(可能涉及到查看和理解DLL中的函数) - LED屏硬件工作原理和通信...

    java实现网络抓包

    总的来说,Java实现网络抓包是一项涉及多方面技术的工作,需要深入理解网络协议、数据包解析和HTTP交互。通过实践和学习,开发者可以构建强大的网络监控工具,帮助排查网络问题,优化应用性能,甚至进行安全分析。

    详解Java实现的k-means聚类算法

    Java实现的k-means聚类算法主要分为以下几个步骤: 1. 数据准备:读取数据源,准备要进行聚类分析的数据。 2. 初始质心选择:选择初始质心,k-means聚类算法需要初始质心来确定每个簇的中心点。 3. 数据分组:根据...

    java实现局域网内语音通话.zip

    本项目“java实现局域网内语音通话”是一个利用Java技术实现实时语音通信的示例。它允许用户在局域网环境中进行1对1或群组通话,无需预先知晓所有参与者的IP地址,极大地提高了通信的便利性。 首先,我们要理解Java...

    利用java实现ICMP协议在linux环境配

    然后,需要配置JDK环境变量,修改/etc/profile文件,添加以下内容: export JAVA_HOME=/usr/java/jdk1.6.0_32 export JRE_HOME=$JAVA_HOME/jre export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/...

    java 实现视频上传

    为了实现上述功能,你可能需要学习和使用以下技术: 1. Servlet API,用于处理HTTP请求。 2. 文件I/O操作,如Java的`FileInputStream`和`FileOutputStream`。 3. FFmpeg命令行工具或其Java绑定,如JAVE。 4. JavaFX...

    java实现柱状图

    要使用 Java 实现柱状图,需要按照以下步骤进行: * 导入 JFreeChart 库 * 创建 CategoryDataset 对象,用于存储图形的数据 * 使用 ChartFactory 创建柱状图 * 自定义图形的外观,例如设置标题、颜色、字体等 * 将...

    Kmeans文本聚类java实现

    以下是KMeans文本聚类的Java实现步骤: 1. **初始化**: 首先选择K个中心点,这可以随机从数据集中选取或者采用KMeans++策略,确保初始中心点的多样性。 2. **分配样本**: 对每个文本向量,计算其与所有中心点的...

    java实现两个word文件进行比较

    在Java编程环境中,实现两个Word文档的比较是一项常见的任务,特别是在文档处理或自动化测试的场景中。本篇文章将深入探讨如何使用Java技术有效地完成这个任务,重点在于理解文档的结构、选择合适的库以及如何标记...

    Xmodem和Ymodem 传输协议JAVA实现

    **Java实现** 在Java环境中实现Xmodem和Ymodem协议,需要理解串行通信的基础知识,如输入/输出流、字节缓冲区以及异步通信。以下是一般步骤: 1. **建立连接**:使用`java.comm`库或第三方库(如RXTX)建立串行通信...

    java实现cmpp协议开发代码

    Java实现CMPP协议开发代码主要涉及的是中国移动通信的CMPP(China Mobile Packet Protocol)协议,该协议主要用于短信中心(SMSC)与短信网关(SP)之间的数据传输,包括发送短消息、接收短消息以及相关的控制功能。...

    使用Java实现对dbf文件的简单读写

    本文将介绍使用 Java 实现对 dbf 文件的简单读写,包括读写 dbf 文件的基本步骤、相关类的介绍、代码实现等内容。 一、读写 dbf 文件的基本步骤 dbf 文件是一种常用的数据库文件格式,用于存储结构化数据。读写 ...

    Java实现随机森林算法

    在Java中实现随机森林算法通常需要使用机器学习库,比如Weka或者Apache Spark的MLlib。下面我将展示一个使用Weka库的简单示例,来说明如何使用随机森林算法对数据进行分类。 首先,你需要在项目中引入Weka库。如果...

    java实现的浏览器

    在实际的Java浏览器项目中,开发者通常会实现以下关键模块: - 地址栏:输入URL,解析并加载页面。 - 历史记录:保存用户的浏览历史,方便回溯。 - 书签管理:保存用户喜欢的网页链接。 - 下载管理:处理文件下载,...

Global site tag (gtag.js) - Google Analytics