-
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个答案 按时间排序 按投票排序
-
这个实现很简单,但是要符合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
-
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是实现网络通信的基础,通过Socket可以实现客户端和服务器端之间的通信。本文将详细介绍Java基于Socket实现的客户端和服务端通信功能,包括...
以下是对"java实现视频压缩"这一主题的详细阐述。 首先,我们要理解视频压缩的基本原理。视频是由连续的静态图像(帧)组成的,而压缩的目标是减少这些帧的数据量,以便更有效地存储和传输。常见的压缩方法分为无损...
【Java实现课程表】是一个基于Java编程语言设计的特定于某个学校的教务系统课程表程序。这个程序的主要目的是为了展示如何使用Java技术来构建一个能够显示、管理个人课程的工具。由于不同学校的教务系统差异,这个...
在Java实现中,`SipApplicationDispatcher`类通常用于处理SIP事件,如请求发送、接收响应等。开发者需要实现相应的监听器接口(如`javax.sip.EventListener`)以处理这些事件。 在提供的压缩包文件`Sip_Java`中,...
以下将详细介绍如何在Java环境中,结合ASP和JSP技术来实现这一功能。 首先,我们需要理解图片上传的基本流程。用户通过浏览器选择图片后,这些图片将以二进制数据的形式发送到服务器。服务器接收到数据后,可以先将...
为了成功实现Java对接LED屏,开发者需要对以下知识有深入理解: - Java语言基础 - JNI原理及使用 - Windows系统上的动态链接库和DLL文件 - C/C++编程(可能涉及到查看和理解DLL中的函数) - LED屏硬件工作原理和通信...
总的来说,Java实现网络抓包是一项涉及多方面技术的工作,需要深入理解网络协议、数据包解析和HTTP交互。通过实践和学习,开发者可以构建强大的网络监控工具,帮助排查网络问题,优化应用性能,甚至进行安全分析。
Java实现的k-means聚类算法主要分为以下几个步骤: 1. 数据准备:读取数据源,准备要进行聚类分析的数据。 2. 初始质心选择:选择初始质心,k-means聚类算法需要初始质心来确定每个簇的中心点。 3. 数据分组:根据...
本项目“java实现局域网内语音通话”是一个利用Java技术实现实时语音通信的示例。它允许用户在局域网环境中进行1对1或群组通话,无需预先知晓所有参与者的IP地址,极大地提高了通信的便利性。 首先,我们要理解Java...
然后,需要配置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/...
为了实现上述功能,你可能需要学习和使用以下技术: 1. Servlet API,用于处理HTTP请求。 2. 文件I/O操作,如Java的`FileInputStream`和`FileOutputStream`。 3. FFmpeg命令行工具或其Java绑定,如JAVE。 4. JavaFX...
要使用 Java 实现柱状图,需要按照以下步骤进行: * 导入 JFreeChart 库 * 创建 CategoryDataset 对象,用于存储图形的数据 * 使用 ChartFactory 创建柱状图 * 自定义图形的外观,例如设置标题、颜色、字体等 * 将...
以下是KMeans文本聚类的Java实现步骤: 1. **初始化**: 首先选择K个中心点,这可以随机从数据集中选取或者采用KMeans++策略,确保初始中心点的多样性。 2. **分配样本**: 对每个文本向量,计算其与所有中心点的...
在Java编程环境中,实现两个Word文档的比较是一项常见的任务,特别是在文档处理或自动化测试的场景中。本篇文章将深入探讨如何使用Java技术有效地完成这个任务,重点在于理解文档的结构、选择合适的库以及如何标记...
**Java实现** 在Java环境中实现Xmodem和Ymodem协议,需要理解串行通信的基础知识,如输入/输出流、字节缓冲区以及异步通信。以下是一般步骤: 1. **建立连接**:使用`java.comm`库或第三方库(如RXTX)建立串行通信...
Java实现CMPP协议开发代码主要涉及的是中国移动通信的CMPP(China Mobile Packet Protocol)协议,该协议主要用于短信中心(SMSC)与短信网关(SP)之间的数据传输,包括发送短消息、接收短消息以及相关的控制功能。...
本文将介绍使用 Java 实现对 dbf 文件的简单读写,包括读写 dbf 文件的基本步骤、相关类的介绍、代码实现等内容。 一、读写 dbf 文件的基本步骤 dbf 文件是一种常用的数据库文件格式,用于存储结构化数据。读写 ...
在Java中实现随机森林算法通常需要使用机器学习库,比如Weka或者Apache Spark的MLlib。下面我将展示一个使用Weka库的简单示例,来说明如何使用随机森林算法对数据进行分类。 首先,你需要在项目中引入Weka库。如果...
在实际的Java浏览器项目中,开发者通常会实现以下关键模块: - 地址栏:输入URL,解析并加载页面。 - 历史记录:保存用户的浏览历史,方便回溯。 - 书签管理:保存用户喜欢的网页链接。 - 下载管理:处理文件下载,...