♥作业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. JAVA集合类汇总

    一.集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. ...

  2. css学习归纳总结(三) 转

    原文地址:css学习归纳总结(三) 为文档添加样式的三种方法 行内样式 行内样式是写在HTML标签的style属性里的,比如: <p style="font-size: 12px;fo ...

  3. django orm总结[转载]

    django orm总结[转载] 转载地址: http://www.cnblogs.com/linjiqin/archive/2014/07/01/3817954.html 目录1.1.1 生成查询1 ...

  4. Spring AOP基本概念

    Spring AOP基本概念 目录 Spring AOP定义 AOP基本术语 通知类型 AOP定义 AOP基本术语 切面( Aspect ):一个能横切多个对象的模块化的关注点.对Spring AOP ...

  5. 大米网赚项目介绍,官方唯一客服QQ:712994168

    大米平台项目来源   QQ:712994168 大米软件本质上是一个高质量网赚项目收集和发布平台,该平台的所有项目都是经过专业的测试团队实测有效的项目和教程,只要去做绝对可以赚钱.平台里面的项目类型包 ...

  6. 用HTML做的简单的个人简历

    <html> <head> <title>table表格</title> <style type="text/css"> ...

  7. 几个实用的mysql函数

    在工作中,处理数据时候往往使用php要废很多脑筋和写很多东西,如果不考虑代码的阅读性试试几个mysql的函数可以解决许多常见需求: 1.截取字符串函数: left() 从左开始截取字符串  right ...

  8. python 获取脚本所在目录

    平时写python经常会想获得脚本所在的目录,例如有个文件跟脚本文件放在一个相对的目录位置,那就可以通过脚本文件的目录找到对应的文件,即使以后脚本文件移到其他地方,脚本也基本不需要改动(相对于写死目录 ...

  9. 开启关闭keditor 过滤

    filterMode: false, K.create('#txt_content', { uploadJson: '/js/kindeditor-4.1.10/upload_json.ashx', ...

  10. html5移动web开发笔记(一)Web 存储

    localStorage - 没有时间限制的数据存储 localStorage 方法 localStorage 方法存储的数据没有时间限制.第二天.第二周或下一年之后,数据依然可用. 用户访问页面的次 ...