zoukankan      html  css  js  c++  java
  • java开发_快速搜索本地文件_小应用程序

    先来看看效果:

    这是一个Application运行效果

    然后我突发奇想,我之前做过一个Application叫做:java开发_java小程序_邮死你(yousini)_源码下载

    为什么不去修改它的源代码,把这个功能实现在一个桌面应用程序中去呢?

    就这样有一个java小程序就这样诞生啦....

    ==========================================================

    代码部分:

    ==========================================================

    上面的Application代码:

     1 /**
     2  * 
     3  */
     4 package com.b510;
     5 
     6 import java.io.File;
     7 import java.util.Date;
     8 
     9 public class ThreadDemo implements Runnable {
    10     // 要统计的磁盘路径
    11     private String path;
    12 
    13     // 构造方法
    14     public ThreadDemo(String path) {
    15         this.path = path;
    16     }
    17 
    18     // 主方法
    19     public static void main(String[] args) {
    20         // 得到根目录
    21         File[] root = File.listRoots();
    22         System.out.println("所有目录:");
    23         for (int i = 0; i < root.length; i++) {
    24             System.out.println(root[i].getAbsolutePath());
    25         }
    26         System.out.println("=====================================");
    27         for (int i = 0; i < root.length; i++) {
    28             System.out.println("开始处理:" + root[i].getAbsolutePath() + " 目录...");
    29             // 创建线程对象
    30             ThreadDemo td = new ThreadDemo(root[i].getAbsolutePath());
    31             new Thread(td).start();
    32         }
    33     }
    34 
    35     // 重写run方法
    36     public void run() {
    37         long start = new Date().getTime();
    38         int num = countFile(path);
    39         long end = new Date().getTime();
    40         System.out.println(path + "统计共有" + num + "个文件!共耗时:[" + (end - start) + "]ms");
    41     }
    42 
    43     // 统计文件数目的方法
    44     public int countFile(String path) {
    45         int count = 0;
    46         File file = new File(path);
    47         // 得到该目录下的所有文件
    48         File[] subFile = file.listFiles();
    49         // 如果该目录为空或
    50         if (null == subFile || subFile.length == 0) {
    51             return count;
    52         }
    53         for (int i = 0; i < subFile.length; i++) {
    54             if (subFile[i].isDirectory()) {
    55                 // System.out.println(subFile[i].getAbsolutePath());
    56                 count += countFile(subFile[i].getAbsolutePath());
    57             } else if (subFile[i].isFile()) {
    58                 if (getPostfix(subFile[i].getName()).equals("gif")) {
    59                     System.out.println("文件名称:" + subFile[i].getAbsolutePath());
    60                 }
    61                 count++;
    62             }
    63         }
    64         return count;
    65     }
    66 
    67     /**
    68      * 获取inputFilePath的后缀名,如:"e:/test.pptx"的后缀名为:"pptx"<br>
    69      * 
    70      * @param inputFilePath
    71      * @return
    72      */
    73     public String getPostfix(String inputFilePath) {
    74         return inputFilePath.substring(inputFilePath.lastIndexOf(".") + 1);
    75     }
    76 
    77 }

    下面的桌面应用程序代码:

    主要参考java开发_java小程序_邮死你(yousini)_源码下载

    我把修改的类的代码贴出来:(其实就修改了两个类 ^_^)

    /SearchFiles/src/com/b510/sendmail/main/SendMailMain.java

     1 package com.b510.sendmail.main;
     2 
     3 import com.b510.sendmail.ui.SendMailUI;
     4 
     5 /**
     6  * @author Hongten
     7  * 
     8  * @time 2012-4-4 2012
     9  */
    10 public class SendMailMain {
    11     public static void main(String[] args) {
    12         SendMailUI sendMailUI = new SendMailUI("MySearchFileUtil v1.0");
    13     }
    14 }

    /SearchFiles/src/com/b510/sendmail/ui/SendMailUI.java

      1 package com.b510.sendmail.ui;
      2 
      3 import java.awt.Graphics;
      4 import java.awt.event.ActionEvent;
      5 import java.awt.event.ActionListener;
      6 import java.awt.event.WindowAdapter;
      7 import java.awt.event.WindowEvent;
      8 
      9 import javax.swing.ImageIcon;
     10 import javax.swing.JFrame;
     11 import javax.swing.JOptionPane;
     12 import javax.swing.JPanel;
     13 
     14 import com.b510.sendmail.utils.AboutSendmail;
     15 
     16 /**
     17  * 
     18  * @author Hongten
     19  */
     20 public class SendMailUI extends JFrame implements ActionListener {
     21 
     22     public static javax.swing.JTextArea infoShow;
     23     private javax.swing.JScrollPane jScrollPane1;
     24     private javax.swing.JPanel mainPanel;
     25     private javax.swing.JMenuBar menuBar;
     26     private javax.swing.JButton send;
     27     private javax.swing.JProgressBar showTime;
     28     private javax.swing.JTextField targetmail;
     29     javax.swing.JMenu fileMenu;
     30     javax.swing.JMenuItem exitMenuItem;
     31     javax.swing.JMenu helpMenu;
     32     javax.swing.JMenuItem aboutMenuItem;
     33     private static boolean flag;
     34     private static int number = 266;
     35     private int i = 0;
     36     private AboutSendmail aboutSendmail;
     37     /**
     38      * 定义图盘图盘标志
     39      */
     40     public boolean iconed = false;
     41     /** 定义托盘 */
     42     MyTray myTray;
     43 
     44     /**
     45      * 版本号
     46      */
     47     private static final long serialVersionUID = -6601825053136983041L;
     48 
     49     public SendMailUI(String title) {
     50         this.setTitle(title);
     51         init();
     52     }
     53 
     54     /**
     55      * 主界面初始化
     56      */
     57     public void init() {
     58 
     59         mainPanel = new JPanel() {
     60             private static final long serialVersionUID = 1L;
     61 
     62             protected void paintComponent(Graphics g) {
     63                 ImageIcon icon = new ImageIcon("src/resources/mail_bg.png");
     64                 g.drawImage(icon.getImage(), 0, 0, 700, 430, null);
     65             }
     66         };
     67 
     68         targetmail = new javax.swing.JTextField();
     69         send = new javax.swing.JButton();
     70         jScrollPane1 = new javax.swing.JScrollPane();
     71         infoShow = new javax.swing.JTextArea();
     72         menuBar = new javax.swing.JMenuBar();
     73         fileMenu = new javax.swing.JMenu();
     74         exitMenuItem = new javax.swing.JMenuItem();
     75         helpMenu = new javax.swing.JMenu();
     76         aboutMenuItem = new javax.swing.JMenuItem();
     77         // 设置为0到180,即180s,3分钟
     78         showTime = new javax.swing.JProgressBar(0, number);
     79         aboutSendmail = new AboutSendmail("关于软件");
     80         aboutSendmail.setVisible(false);
     81 
     82         // 是否在进度条上显示字符
     83         showTime.setStringPainted(true);
     84 
     85         mainPanel.setName("mainPanel"); // NOI18N
     86 
     87         targetmail.setName("targetmail"); // NOI18N
     88         // targetmail.setText("hongtenzone@foxmail.com");
     89 
     90         send.setText("search"); // NOI18N
     91         send.setName("search"); // NOI18N
     92         send.setEnabled(false);
     93         send.addActionListener(this);
     94 
     95         jScrollPane1.setName("jScrollPane1"); // NOI18N
     96 
     97         infoShow.setColumns(20);
     98         infoShow.setRows(5);
     99         infoShow.setName("infoShow"); // NOI18N
    100         jScrollPane1.setViewportView(infoShow);
    101         // 初始化布局
    102         initComponent();
    103 
    104         menuBar.setName("menuBar"); // NOI18N
    105 
    106         fileMenu.setName("fileMenu"); // NOI18N
    107         fileMenu.setText("file");
    108 
    109         exitMenuItem.setText("exit");
    110         fileMenu.add(exitMenuItem);
    111         exitMenuItem.addActionListener(this);
    112 
    113         menuBar.add(fileMenu);
    114 
    115         helpMenu.setText("help"); // NOI18N
    116         helpMenu.setName("helpMenu"); // NOI18N
    117 
    118         aboutMenuItem.setText("about");
    119         helpMenu.add(aboutMenuItem);
    120         aboutMenuItem.addActionListener(this);
    121 
    122         menuBar.add(helpMenu);
    123 
    124         this.add(mainPanel);
    125         setJMenuBar(menuBar);
    126 
    127         this.setVisible(true);
    128         this.setSize(700, 485);
    129         // 启动进度条记时监听器
    130         timeCardListener();
    131         // 启动邮箱输入框监听器
    132         myListener();
    133         // this.pack();
    134         this.setLocationRelativeTo(null);
    135         this.setResizable(false);
    136         // this.setLocation(470, 250);
    137         // this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    138         // 当点击"-"最小化按钮时,系统会最小化到托盘
    139         addWindowListener(new WindowAdapter() {
    140             public void windowIconified(WindowEvent e) {
    141                 iconed = true;
    142                 setVisible(false);
    143             }
    144 
    145             public void windowClosing(WindowEvent e) {
    146                 // 当点击"X"关闭窗口按钮时,会询问用户是否要最小化到托盘
    147                 // 是,表示最小化到托盘,否,表示退出
    148                 int option = JOptionPane.showConfirmDialog(SendMailUI.this, "是否最小化到托盘?", "提示:", JOptionPane.YES_NO_OPTION);
    149                 if (option == JOptionPane.YES_OPTION) {
    150                     iconed = true;
    151                     SendMailUI.this.setVisible(false);
    152                 } else {
    153                     System.exit(0);
    154                 }
    155             }
    156         });
    157         // 初始化自定义托盘
    158         myTray = new MyTray(SendMailUI.this);
    159 
    160     }
    161 
    162     /**
    163      * 布局文件,没有必要去管他
    164      */
    165     private void initComponent() {
    166         javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
    167         mainPanel.setLayout(mainPanelLayout);
    168         mainPanelLayout.setHorizontalGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
    169                 mainPanelLayout
    170                         .createSequentialGroup()
    171                         .addGap(52, 54, 54)
    172                         .addGroup(
    173                                 mainPanelLayout
    174                                         .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
    175                                         .addGroup(
    176                                                 mainPanelLayout.createSequentialGroup().addComponent(targetmail, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
    177                                                         .addGap(34, 34, 37).addComponent(send))
    178                                         .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 620, javax.swing.GroupLayout.PREFERRED_SIZE)
    179                                         .addGroup(
    180                                                 mainPanelLayout.createSequentialGroup().addGap(463, 463, 463)
    181                                                         .addComponent(showTime, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
    182                         .addContainerGap(30, Short.MAX_VALUE)));
    183         mainPanelLayout.setVerticalGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
    184                 mainPanelLayout
    185                         .createSequentialGroup()
    186                         .addContainerGap()
    187                         .addGroup(
    188                                 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(send)
    189                                         .addComponent(targetmail, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(30, 43, 43)
    190                         .addComponent(showTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    191                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    192                         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 313, javax.swing.GroupLayout.PREFERRED_SIZE).addGap(15, 15, 15)));
    193     }
    194 
    195     // 进度条记时
    196     public void timeCard(final boolean flag) {
    197         new Thread(new Runnable() {// 设置一个线程
    198                     public void run() {
    199                         if (flag) {
    200                             while (i < number) {
    201                                 try {
    202                                     Thread.sleep((long) (1000 * 7.7));
    203                                 } catch (Exception e) {
    204                                     e.printStackTrace();
    205                                 }
    206                                 showTime.setValue(i++);
    207                             }
    208                         } else {
    209                             i = 0;
    210                             showTime.setValue(0);
    211 
    212                         }
    213                     }
    214                 }).start();
    215     }
    216 
    217     // 进度条记时
    218     public void timeCardListener() {
    219         new Thread(new Runnable() {// 设置一个线程
    220                     public void run() {
    221                         while (true) {
    222                             try {
    223                                 Thread.sleep((long) (1000 * 7.7));
    224                             } catch (Exception e) {
    225                                 e.printStackTrace();
    226                             }
    227                             timeCard(flag);
    228                         }
    229                     }
    230                 }).start();
    231     }
    232 
    233     @Override
    234     public void actionPerformed(ActionEvent e) {
    235         if (e.getSource() == send) {
    236             infoShow.append("请耐心等待...\n");
    237             new SendMail().sendMailListener(targetmail.getText());
    238         }
    239         // 退出程序
    240         if (e.getSource() == exitMenuItem) {
    241             System.exit(0);
    242         }
    243         if (e.getSource() == aboutMenuItem) {
    244             aboutSendmail.setVisible(true);
    245         }
    246     }
    247 
    248     class SendMail {
    249         public void sendMailListener(final String targetmail) {
    250             new Thread(new Runnable() {// 设置一个线程
    251                         public void run() {
    252                             while (true) {
    253                                 try {
    254                                     // 线程处于睡眠的时候,flag=true;
    255                                     Thread.sleep(1);
    256                                 } catch (Exception e) {
    257                                     e.printStackTrace();
    258                                 }
    259                                 MySearchUtil.beginSearch(targetmail);
    260                                 try {
    261                                     // 等待timeCardListener监听器监听时间
    262                                     Thread.sleep(1000000000);
    263                                 } catch (Exception e) {
    264                                 }
    265                             }
    266                         }
    267 
    268                     }).start();
    269         }
    270     }
    271 
    272     // 邮箱输入框是否正确填写
    273     public void changedUpdate() {
    274         String mail = targetmail.getText();
    275         send.setEnabled(true);
    276         if (mail.equals("")) {
    277             send.setEnabled(false);
    278         } else if (mail.length() > 0) {
    279             // 输入内容不为空,且是能够匹配邮箱,那么设置send可用
    280             send.setEnabled(true);
    281         } else {
    282             send.setEnabled(true);
    283         }
    284     }
    285 
    286     /**
    287      * 邮箱是否填写完整监听器
    288      */
    289     public void myListener() {
    290         new Thread(new Runnable() {// 设置一个线程
    291                     public void run() {
    292                         while (true) {
    293                             try {
    294                                 Thread.sleep(500);
    295                             } catch (Exception e) {
    296                                 e.printStackTrace();
    297                             }
    298                             changedUpdate();// 填写邮箱
    299                         }
    300                     }
    301                 }).start();
    302     }
    303 }

     I'm Hongten

  • 相关阅读:
    sql server日志已满报错
    图片基础信息
    android小细节
    内存泄露分析
    一个非常快的android模拟器
    activity退出
    ListView中内容的动画效果
    视频相关android软件
    Android Screen Monitor抓取真机屏幕
    ListView中使用type需要注意的东西
  • 原文地址:https://www.cnblogs.com/hongten/p/hongten_java_search_application.html
Copyright © 2011-2022 走看看