♥作业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. css学习归纳总结(三) 转

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

  2. Oracle中DBLink的使用

    DBLink 的作用是在局域网内,通过一台服务器上面的数据库访问另外一台服务器上面数据库的功能. 下面简单的介绍DBLink的配置: 服务器A:IP 10.10.10.107, 数据库实例名:orcl ...

  3. python解析robot framework的output.xml,并生成html

    一.背景 Jenkins自动构建RF脚本,生成的RF特有HTML报告不能正常打开. 需求:用Python解析测试报告的xml数据,放在普通HTML文件中打开 二.output.xml数据 三.用pyh ...

  4. Objective-C( Foundation框架 一 NSDictionary (NSMutaleDictionary))

    NSDictionary 不可变的字典 创建字典的方法 // 创建字典的方式 NSDictionary *dy = [NSDictionary dictionaryWithObject:@" ...

  5. NoSQL生态系统——hash分片和范围分片两种分片

    13.4 横向扩展带来性能提升 很多NoSQL系统都是基于键值模型的,因此其查询条件也基本上是基于键值的查询,基本不会有对整个数据进行查询的时候.由于基本上所有的查询操作都是基本键值形式的,因此分片通 ...

  6. python pandas根据首字母选行

    ret2.loc[ret2['INNERCODE'].map(lambda x:x[0]=='6' or x[0]=='3' or x[0]=='0' ),:]和matlab不一样的风格 - -直接用 ...

  7. 通过Maven插件发布JaveEE项目到tomcat下

    1.修改tomcat\conf\tomcat-users.xml文件,在文件中增加 <role rolename="manager-script"/> <user ...

  8. java selenium (十三) 智能等待页面加载完成

    我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作.  否则页面上的元素不存在,会抛出异常. 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操 ...

  9. 为TIF、JPG图片添加地理坐标/平面直角坐标

    图片分辨率.(X方向像素数numX,Y方向像素数numY) 步骤: (1)在放图片的目录下新建TXT文本文档,将文件名改为与图片相同,扩展名改为jgw(JPG图片),(TIF要改为tfw). (2)用 ...

  10. JQuery随笔

    web请求中,外部样式文件的加载不影响页面,js的加载会影响页面的加载速度 window.onlond 页面所有元素加载完后执行包含js,css等加载完毕 $(function(){}) 页面中DOM ...