♥作业1:

显示指定路径所有文件及实现文件筛选。智能监控,程序能自动在下拉菜单生成任意路径下文件所有尾缀。

 代码内注释内容为步骤与整体思路 

 import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.HashMap;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder; /**
* 文件排序系统。
*
* @author
*
*/
public class FileUtils { /**
* 用于存储分类后的文件。
* key:后缀名, value:StringBuilder存储对应的文件。
*/
private HashMap<String, StringBuilder> resultMap = new HashMap<String, StringBuilder>(); /**
* 监听文件目录。
*
* @param dir 目录。
* @throws IllegalAccessException 访问非法异常。
*/
public void listenDirectory(File dir) throws IllegalAccessException {
if (!dir.exists()) {
throw new IllegalAccessException("目录" + dir + "不存在。");
} if (!dir.isDirectory()) {
throw new IllegalArgumentException(dir + "不是目录");
} String[] fileNames = dir.list();
resultMap.put("all", new StringBuilder()); //默认所有文件。
resultMap.put("folder", new StringBuilder()); //文件夹形式。 //后缀。
String suffix;
for (String fileName : fileNames) {
resultMap.get("all").append(fileName + "\n");
if (fileName.indexOf(".") > 0) {
suffix = fileName.substring(fileName.indexOf("."), fileName.length()); if (!resultMap.containsKey(suffix)) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(fileName + "\n");
resultMap.put(suffix, stringBuilder);
} else {
resultMap.get(suffix).append(fileName + "\n");
}
} else {
resultMap.get("folder").append(fileName + "\n");
}
} buildGUI();
} /**
* 搭建GUI。
*/
public void buildGUI() {
final JTextArea fileList = new JTextArea();
fileList.setText(resultMap.get("all").toString());
String[] likes = new String[resultMap.keySet().size()];
resultMap.keySet().toArray(likes);
final JComboBox combox = new JComboBox(likes); JFrame frm = new JFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(6, 10, 10, 10));
contentPane.setLayout(new BorderLayout(5, 5));
contentPane.add(combox, BorderLayout.NORTH); JPanel pane = new JPanel();
pane.setLayout(new BorderLayout(8, 8)); JLabel label = new JLabel(" File lists :");
label.setFont(new Font("Serif", Font.PLAIN, 16)); fileList.setForeground(new Color(140, 171, 226));
fileList.setBackground(Color.white);
fileList.setSelectedTextColor(new Color(87, 49, 134));
fileList.setForeground(Color.black); JScrollPane scrollPane = new JScrollPane(fileList);
scrollPane.setColumnHeaderView(label); pane.add(scrollPane, BorderLayout.CENTER);
contentPane.add(pane, BorderLayout.CENTER);
frm.add(contentPane);
frm.setBounds(500, 300, 300, 400);
frm.setVisible(true); //JComboBox事件监听。
combox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 获取组合框的item
String item = (String) combox.getItemAt(combox.getSelectedIndex());
fileList.setText(resultMap.get(item).toString());
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
} public static void main(String[] args) {
String path = "D:\\";
try {
new FileUtils().listenDirectory(new File(path));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}

 下面是结果:

(1)D盘 文件类型较多

      

(2)又如F盘路径下只有文件夹,则下拉菜单只显示folder

   

♥作业2:正在努力改进中…(˘•ω•˘)ง老师请谅解

Java(五)的更多相关文章

  1. Java(五、类和对象中的例题)

    一.方法中的参数为数值型的(int) import java.util.Scanner; public class ScoreCalc { public void calc(int num1,int ...

  2. 接口自动化:HttpClient + TestNG + Java(五) - 接口测试数据驱动

    在上一篇中,我们实现了post方法请求的封装和测试,这一篇我们做测试数据的分离. 5.1 测试数据处理思路 5.1.1 测试数据分离 这里我想到,我们之前的测试demo里,全都是在testNG类里去写 ...

  3. 行为驱动:Cucumber + Selenium + Java(五) - 使用maven来实现cucumber测试和报告

    在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的测试用例参数化/数据驱动,这一篇我们来使用maven去搭建cucumber框架以及实现测试报告. 5.1 为什么要用m ...

  4. Java五种基本的Annotation,提高程序的可读性

    从JDK5开始,Java增加了对元数据的支持,也就是Annotation(即注解也被翻译为注释). 这里的Annotation和普通的注释有一定的区别,它是代码中的特殊标记,这些标记可以在编译.类加载 ...

  5. [转]Java五个最常用的集合类之间的区别和联系

    Map<String, ?>只能是只读模式,不能增加,因为增加的时候不知道该写入什么类型的值:Map<String, Object>可以读和写,只要是所有Object类的子类都 ...

  6. Core Java(五)

    类和对象&方法 ——类的定义 现实世界的事物 属性:人的身高,体重等 行为:人可以学习,吃饭等 Java中用class描述事物也是如此 成员变量:就是事物的属性 成员方法:就是事物的行为    ...

  7. 巩固java(五)----通过实例理解java多态

    package duotai; class A{ public String show(){ return "A"; } } class B extends A{ public S ...

  8. java 五十条数据分为一组

    public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for(int ...

  9. Java五种单例区别

    详细请参考如下链接: http://www.voidcn.com/article/p-shzgsluz-bqa.html https://blog.csdn.net/android_freshman/ ...

随机推荐

  1. CentOS_7.2服务器前期

    一.禁用SELinux:# 永久禁用,需要重启生效: sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux se ...

  2. guava学习--AsyncFunction

    AsyncFuntion接口与之前学习吃的使用Function和Functions进行对象转换有很密切的联系,AsyncFuction接口是Function接口的异步表现,AsyncFuction和F ...

  3. session放入缓存(redis)、DB

    为什么要把SESSION保存在缓存 就php来说,语言本身支持的session是以文件的方式保存到磁盘文件中,保存在指定的文件夹中,保存的路径可以在配置文件中设置或者在程序中使用函数session_s ...

  4. C——整型提升

    一.定义 integral promotion: "A character, a short integer, or an integer bit-field, all either sig ...

  5. EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(四)

    前言 这一篇,我们终于到了讲解Entity Framework CodeFirst 的时刻了,首先创建实体对象模型,然后会通过配置Fluent API的方式来对实体对象模型进行完整的数据库映射操作. ...

  6. 【接口】【USB】1.学习笔记

    1.USB的优点: 可以热插拔,即插上后可以自动识别: 系统总线供电,USB共有四根线,一根电源线,一根地线,一根D+线,一根D-线,D+和D-线是差分输入线: 可以支持多种设备,且扩展容易,通过HU ...

  7. JS基础(超级简单)

    1     JS基础(超级简单) 1.1 数据类型 1.1.1   基本类型: 1)        Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2)       ...

  8. moffiestyle

    听说    moffie是   带着胭脂粉气息的男人    为什么用这个名字    因为   我觉得   男生   最美  在   浓妆妖艳的时候 据说    南北朝   是  流行   男人化妆的 ...

  9. 用PowerMock spy mock private方法

    在实际的工作中,经常碰到只需要mock一个类的一部分方法,这时候可以用spy来实现. 被测类: public class EmployeeService { public boolean exist( ...

  10. 【转】图像灰度化方法总结及其VC实现

    转载自:  http://blog.csdn.net/likezhaobin/article/details/6915754 最近一段时间作者开始进行运动目标识别定位系统设计,本文以及后续的几篇文章都 ...