NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: 工具软件 .: 手写批量修改windows文件名

手写批量修改windows文件名

需求:用户需要修改目录内的文件名,文件夹名

分析:方便用户可视化的操作需要有图形界面,批量修改文件名大量重复性操作,防止用户一次性修改错误,需要又恢复功能。

实现方法:可视化页面用java (awt swing) 两个包实现。大量重复性操作设计采用回调方式实现。恢复根据用户提供的名字遍历删除。

简单描述代码实现

  可视化页代码中主要参数方法参数详解

1,主类abc是程序开始的入口主要语句:

new WindowView(),加载其它类;

2WindowView画窗体主要使用参数语句参数

    Frame cmp =   cmp.setFrm(new Frame("文件工具"));这句意思生成一个可视化的窗体标题为文件工具如下图:这个对像有些方法可以设置大小如:

  

   Frame这个对像有些方法可以设置如:

这个方法setBounds 第一个设置窗体坐标显示x位置 第二个设置窗体坐标显示y位置窗体,第三个窗体宽度,第四个船体高度

cmp.getFrm().setBounds((cmp.getWidth() - 550) / 2, (cmp.getHeight()  - 600) / 2, 550, 600);

 setLayout(null)这名用来清空窗体布局 以后布局由组件自由控制从0.0坐标开始,如果不设置坐标则不受默认0.0坐标控制

         cmp.getFrm().setLayout(null);

setBackground 用来设置窗体背景色 后边参数为rgb 根据个人爱好设置

         cmp.getFrm().setBackground(new Color(204, 232, 207));

         //这句非常重要没有这句无法显示窗体

         cmp.getFrm().setVisible(true);

      文本框(雷同其它组件对象)添如何加到Frame窗体中示意图如下:1-1

这句意思设置文本框 并设置初始化值《输入路径:

new TextField("输入路径:");

这句意思设置文本框显示Frame窗体中的坐标 及大小

setBounds(80, 80, 250, 25);

这句话的意思将文本框添加到Frame窗体中 示意图如下

TextField.add(cmp.getTf());

       1-1       

    最关键属性加载监听器

        这个当在写监听器时只需要实现监听其对象及方法调用自个的java程序即可,如下我把监听器封装到对象里面调用具体方法实现加载

// 注进监听器 因为我要监听窗体所以穿窗体对象cmp,调用监听器方法myEvent();

       new ListenImplement(cmp).myEvent();

      

      

3,监听器写法举例说明:

这个监听器是于窗体添加关闭功能的:

获取通过Frame对象获取监听器

addWindowListener()《addactionlistene组件级》向文件选择器添加一个监听器 里面参数具体监听那种事件我的是窗体事件对象WindowAdapter

windowClosing关闭事件处理方法System.exit(0)是关闭当前窗体,你也可以干其他的坏事。其它5事件有所雷同不在在里写了可以查API

comp.getFrm().addWindowListener(new WindowAdapter() {

           public void windowClosing(WindowEvent e) {

              System.exit(0);

           }

       });

 

事件监听器接受参数

       用户主目录的文件选择器用来接受用户传来的值:

new JFileChooser() 生成文件目录对象

    获取文件目录对象 参数JFileChooser.DIRECTORIES_ONLY 意思获取文件目录

    setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

          

回调通过用户出发事件调用具体处理方法。下面是具体方法编写。  

通过监听器获取到文件目录:进行文件封装

1,这个是根据文件路径获取具体的文件

  File file = new File(past);

获取文件抽象路径名数组

File[] listFiles = file.listFiles()

File 对象里面有很多方法比如删除文件 修改文件日期等等。。

我用的有 isDirectory()  renameTo() 第一个判断是否为文件夹 如果是就回调本方法。

第二个修改文件名

 

 

     

                  

                  

        

具体实现

该代码主要通过监听器获取用户传递过来的值,然后进行封装用户的参数,通过java

语具体操作修改,删除文件名前缀或后缀。

代码整体结构图如下(由于kms不支持图形化所以该结构存到附件中了):

 

Main

WindowView

Composite

实现

ListenImplement

Warning

ExchengRollBackRollBack

RollBack


                                        

1使用java图形框架具体迁设到的组件

Composite

public class Composite {

    // 窗体容器

    private Frame frm;

    // 文本组件

    private TextField tf;

    private TextField tfParameter1=null;

    private TextField tfParameter2=null;

    // 按钮组件

    private Button button;

    // 恢复按钮

    private Button recover;

    // 文本区域组件

    private TextArea ta;

    // 打开按键

    private Button openButton;

    // 对话框组件

    private Dialog dl;

    // 对话框上的文本标签

    private Label lbl;

    // 对话框上的确定按钮

    private Button dlbButton;

    // 定义资源管理窗口

    private FileDialog fd;

    // 获得屏幕分辨率

    private static final int width = Toolkit.getDefaultToolkit()

           .getScreenSize().width;

    private static final int height = Toolkit.getDefaultToolkit()

           .getScreenSize().height;

    // 通过对话框,选择的文件,定义成全局变量

    String dir;

    String filename;

    // 前缀后缀参数

    String begin;

    String later;

    // 获得文件夹

    private JFileChooser fc;

 

 

 

 

 

2 图形组件具体实现

         WindowView class

public class WindowView {

         Composite cmp = new Composite();

        

          WindowView() {

                  

                   // 对窗体进行初始化的设置

                   cmp.setFrm(new Frame("文件工具"));

                   // 设置尺寸大小位置 颜色

                   cmp.getFrm().setBounds((cmp.getWidth() - 550) / 2, (cmp.getHeight()  - 600) / 2, 550, 600);

                   cmp.getFrm().setLayout(null);

                   cmp.getFrm().setBackground(new Color(204, 232, 207));

                   // 显示窗体

                   cmp.getFrm().setVisible(true);

                   // 文本框用户输入初始化设置

                   cmp.setTf(new TextField("输入路径:"));

                   cmp.getTf().setBounds(80, 80, 250, 25);

                   // 组件添加到窗体

                   cmp.getFrm().add(cmp.getTf());

                   // 文本框用户输入初始化设置

                   cmp.setTfParameter1(new TextField("前缀:"));

                   cmp.getTfParameter1().setBounds(80, 40, 120, 25);

                   // 组件添加到窗体

                   cmp.getFrm().add(cmp.getTfParameter1());

                   // 文本框用户输入初始化设置

                   cmp.setTfParameter2(new TextField("后缀:"));

                   cmp.getTfParameter2().setBounds(210, 40, 120, 25);

                   // 组件添加到窗体

                   cmp.getFrm().add(cmp.getTfParameter2());

                   // 按钮进行初始化设置

                   cmp.setButton(new Button("修改查询"));

                   cmp.getButton().setBounds(380, 80, 50, 25);

                   cmp.getFrm().add(cmp.getButton());

                   cmp.setOpenButton(new Button("打开"));

                   cmp.getOpenButton().setBounds(380, 40, 50, 25);

                   cmp.getFrm().add(cmp.getOpenButton());

                   // 恢复框

                   cmp.setRecover(new Button("恢复"));

                   cmp.getRecover().setBounds(440, 40, 100, 65);

                   cmp.getFrm().add(cmp.getRecover());

                   // 对文本区域进行初始化设置

                   cmp.setTa(new TextArea());

                   cmp.getTa().setBounds(80, 130, 350, 400);

                   cmp.getFrm().add(cmp.getTa());

                   // 初始化对话框组件

                   cmp.setDl(new Dialog(cmp.getFrm(), "错误信息提示", true));

                   cmp.getDl().setLayout(null);

                   cmp.getDl().setBounds((cmp.getWidth() - 500) / 2, (cmp.getHeight()  - 150) / 2, 500, 150);

                   // 初始化对话框文本框文本标签

                   cmp.setLbl(new Label()); 

                   cmp.getLbl().setBounds(80, 40, 400, 40);

                  cmp.getDl().add(cmp.getLbl());

                   //对话框 提示框上的按建

                   cmp.setDlbButton(new Button("关闭"));

                   cmp.getDlbButton().setBounds(220, 100, 50, 25);

                   cmp.getDl().add(cmp.getDlbButton());

                   // 注进监听器

                   new ListenImplement(cmp).myEvent();

         }

}

 

 

 

 

 

 

 

3.监听器具体实现操作 

ListenImplement

public class ListenImplement {

         Composite comp =null;

         ListenImplement(Composite comp){

                   this.comp=comp;

         }

         public void myEvent() {

        

                   // 关闭监听

                   comp.getFrm().addWindowListener(new WindowAdapter() {

                            public void windowClosing(WindowEvent e) {

                                     System.exit(0);

                            }

                   });

                   // 关闭提示

                   comp.getDlbButton().addActionListener(new ActionListener() {

                            @Override

                            public void actionPerformed(ActionEvent e) {

                                     comp.getDl().setVisible(false);

                            }

                   });

                   /*

                    * openButton.addActionListener(new ActionListener() {

                    *

                    * @Override public void actionPerformed(ActionEvent e) { //弹出文件资源窗口

                    * fd=new FileDialog(frm,"打开文件",FileDialog.LOAD); fd=new

                    * FileDialog(frm,"打开文件",FileDialog.LOAD); fd.setVisible(true);

                    *

                    * dir =fd.getDirectory(); System.out.println(dir);

                    * filename=fd.getFile(); //添加路径 tf.setText(dir); if(dir==null ||

                    * filename==null) return ; } });

                    */

                   comp.getOpenButton().addActionListener(new ActionListener() {

                            @Override

                            public void actionPerformed(ActionEvent e) {

                                     int flag;

                                     comp.setFc(new JFileChooser());

                                     comp.getFc().setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

                                     File file = null;

                                     flag = comp.getFc().showOpenDialog(null);

                                     if (flag == JFileChooser.APPROVE_OPTION) {

                                               // 获得文件

                                               file = comp.getFc().getSelectedFile();

                                               comp.setDir(file.getPath());

                                               System.out.println(comp.getDir());

                                               comp.getTf().setText(comp.getDir());

                                     }

                            }

                   });

                   // 错误监听

                   comp.getButton().addActionListener(new ActionListener() {

                           

                            public void actionPerformed(ActionEvent e) {

                                     new Warning(comp).getFiles();

                            }

                   });

                  

//               重置

                   comp.getRecover().addActionListener(new ActionListener() {

                           

                            @Override

                            public void actionPerformed(ActionEvent e) {

                           

                                     new Warning(comp).getrecover();

                            }

                   });

         }

}

 

 

 

 

 

 

        

4 修改用户文件名具体实现

Changge class

package huhang.itdept;

import java.io.File;

public class Excheng {

    public static void add(String past, String beginname, String last) {

       File file = new File(past);

       //文件名子

       String filename="";

       // 文件后缀

        String pathlaster = "";

       // 文件前缀

       String pathbegin = "";

       // 获取文件抽象路径名数组

       File[] listFiles = file.listFiles();

       for (int i = 0; i < listFiles.length; i++) {

           // 抽象路径名来创建一个新 File 实例

           File file2 = new File(listFiles[i].toString());

           // 如果为文件夹

           if (listFiles[i].isDirectory()) {

              // 回调

              add(listFiles[i].getAbsolutePath(), beginname, last);

              // 修改文件名

              System.out.println(listFiles[i].getName());

              filename=listFiles[i].getName();

              file2.renameTo(new File(file.getPath() + "\"+beginname +filename+last ));

              continue;

           }

           if (!listFiles[i].isDirectory()) {

              filename=listFiles[i].getName();

              int lastIndexOf = filename.lastIndexOf(".");

              pathlaster = filename.substring(lastIndexOf,filename.length());

              //获取文件名字

              pathbegin=filename.substring(0,lastIndexOf);

              System.out.println( pathbegin+"----"+pathlaster);

              file2.renameTo(new File(file.getPath()+"\"+beginname+pathbegin+last+pathlaster));

           }

       }

    }

}

 

 

 

5回滚删除具体实现

RollBack class

package huhang.itdept;

import java.io.File;

public class RollBack {

    public static void add(String past, String beginname, String last) {

//     System.out.println(past);

       File file = new File(past);

       //文件名i

       String filename="";

       // 文件后缀

       String pathlaster = "";

       // 文件前缀

       String pathbegin = "";

      

       // 获取文件抽象路径名数组

       File[] listFiles = file.listFiles();

       for (int i = 0; i < listFiles.length; i++) {

          

           // 抽象路径名来创建一个新 File 实例

           File file2 = new File(listFiles[i].toString());

           filename = file2.getName();

           // 如果为文件夹

           if (listFiles[i].isDirectory()) {

              // 回调

              add(listFiles[i].getAbsolutePath(), beginname, last);

              //如果有前缀 且包含这个字符串

              if (file2.getName().startsWith(beginname)&&(beginname.length()>0) ) {

                  filename = filename.substring(beginname.length());

                  System.out.println(filename+"----");

                 

              }

              //如果有后缀 且包含这个字符串

              if (filename.endsWith(last)&&(last.length()>0) ) {

                  filename = filename.substring(0,filename.length()-last.length());

                  System.out.println(filename+"---///");

              }

              file2.renameTo(new File(file.getPath() + "\" +filename));

              continue;

           }

           // 如果非文件文件夹

           if(!listFiles[i].isDirectory()){

              int lastIndexOf = filename.lastIndexOf(".");

              pathlaster = filename.substring(lastIndexOf,filename.length());

              //获取文件名字

              pathbegin=filename.substring(0,lastIndexOf);

              //获得文件名后缀 如果包含字符串 且长度不为零

              if (pathbegin.endsWith(last)&&last.length()>0) {

                  pathbegin=pathbegin.substring(0,pathbegin.length()-last.length());

              }

               if(pathbegin.startsWith(beginname)&&beginname.length()>0){

                 pathbegin=pathbegin.substring(beginname.length(),pathbegin.length());

              }

              file2.renameTo(new File(file.getPath() + "\" +pathbegin+pathlaster));

           }

       }

    }

}

 

 

 

6 数据封装调用

         Warning class

package huhang.itdept;

public class Warning {

   

    Composite comp =null;

    Warning(Composite comp){

       this.comp=comp;

    }

    public int getFiles() {

       verify();

       new Excheng().add(comp.getDir(), comp.getBegin(), comp.getLater());

       return 1;

    }

    public int getrecover() {

       verify();

       new RollBack().add(comp.getDir(), comp.getBegin(), comp.getLater());

       return 1;

    }

    //验证路径分装数据

    void verify(){

       String str = comp.getTf().getText();

       comp.setBegin(comp.getTfParameter1().getText());

        comp.setLater(comp.getTfParameter2().getText());

       File f = new File(str);

       if (str.length() == 0) {

         

       }

       if (!(f.exists() && f.isDirectory())) {

           comp.getLbl().setText("您输入的路径不存在" + f + "..不存在");

           comp.getDl().setVisible(true);

       } else {

           comp.getTa().setText("");

           String[] files = f.list();

           File absoluteFile = f.getAbsoluteFile();

//         String path=absoluteFile.getAbsolutePath();

           for (String s : files) {

              // 获取到目录下的所有文件列表好,放在文本区域之内

              comp.getTa().append(s + "rn");

           }

       }

       if (comp.getBegin().equals("前缀:")) {

           comp.setBegin("") ;

       }

       if (comp.getLater().equals("后缀:")) {

           comp.setLater("") ;

       }

    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


这篇文章对你多有用?

相关文章

article 修改Windows文件夹的颜色
平时在“资源管理器”中看到的文件夹都是一种颜色...

(No rating)  11-18-2010    Views: 1178   
article 修改Windows文件夹的颜色
平时在“资源管理器”中看到的文件夹都是一种颜色...

(No rating)  12-8-2010    Views: 1040   
article 修改Windows文件夹的颜色
   ...

(No rating)  9-22-2014    Views: 684   

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited