♥作业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. 【思路】-分页-双top分页算法的原理

    描述:实现分页的一种算法 大致过程:访客访问不同的分页,为这个当前页生成动态的查询SQL,然后送到数据库中执行 输入:总条数,每页多少条,第几页,查询的SQL,排序的字段 注意:传入的排序字段需要构成 ...

  2. PHP正则表达式替换站点关键字链接后空白的问题解决

    标题这样不知道合适不合适.具体的情况是这样的:网站要增加关键字链接功能,然后需要对文章的内容进行正则表达式匹配并替换,然后使用了preg_replace函数.替换的程序代码如下: function R ...

  3. codeforces 727F. Polycarp's problems

    题目链接:http://codeforces.com/contest/727/problem/F 题目大意:有n个问题,每个问题有一个价值ai,一开始的心情值为q,每当读到一个问题时,心情值将会加上该 ...

  4. 基于Jforum开源项目的论坛网站

    基于Jforum开源项目的论坛网站 开发原因: 刚完成了以wordpress及其插件simple-press为基础的论坛网站,因为一直从事java方面开发, 所以尝试一下使用java开源项目Jforu ...

  5. Spring(4)

    Spring的Bean的配置形式 1.基于XML的形式(无需讲解) 2.基于注解的形式(需要引入AOP的jar包,此jar包实现了AOP的注解) 当在Spring配置文件中引入类扫描注解命名空间并且指 ...

  6. 清除Linux OS 缓存

    1.查看内存使用情况 [root@ip---- tpch_2_17_0]# free -m total used free shared buffers cached Mem: -/+ buffers ...

  7. web开发流程(传智播客-方立勋老师)

    1.搭建开发环境 1.1 导入项目所需的开发包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar commons-beanutils-1.8.0.jar commons-log ...

  8. wpf初步-grid布局-连连看棋盘

    private void Window_Loaded_1(object sender, RoutedEventArgs e) { //Button btn1 = new Button(); //btn ...

  9. Angular JS的模块依赖

    AngularJS是纯客户端技术,完全用Javascript编写的.它使用的是网页开发的常规技术(HTML,CSS,Javascript),目的是让网页应用开发更快更容易. AngularJS简化应用 ...

  10. eap-md5

    eap-md5       文件路径 用途 示例 备注 #gedit /usr/local/etc/raddb/sites-available/default #gedit /usr/local/et ...