使用JFileChooser实现在指定文件夹下批量添加根据“数字型样式”或“非数字型样式”命令的文件夹

2018-11-05 20:57:00开始写







Folder.java类

  1 import javax.swing.JFrame;
  2 import javax.swing.JPanel;
  3 import javax.swing.border.EmptyBorder;
  4 import javax.swing.JLabel;
  5 import javax.swing.JOptionPane;
  6
  7 import java.awt.Font;
  8 import javax.swing.JTextField;
  9 import javax.swing.ButtonGroup;
 10 import javax.swing.JButton;
 11 import javax.swing.JFileChooser;
 12
 13 import java.awt.event.ActionListener;
 14 import java.io.File;
 15 import java.text.DecimalFormat;
 16 import java.awt.event.ActionEvent;
 17 import javax.swing.JRadioButton;
 18 import javax.swing.SwingConstants;
 19
 20 public class Folder extends JFrame { // 创建“文件夹”类继承JFrame
 21
 22     private JPanel contentPane; // 内容面板
 23     private JTextField tf_Path; // 输入“文件路径”的文本框
 24     private JTextField tf_From; // “从”后面的文本框
 25     private JTextField tf_To; // “到”后面的文本框
 26     private String Path; // 文件路径
 27     private JRadioButton rdbtnNum;
 28     private JRadioButton rdbtnChar;
 29     private JLabel lblShow;
 30
 31     public static void main(String[] args) {
 32         Folder folder = new Folder(); // 创建“文件夹”对象
 33         folder.setVisible(true); // 使得“文件夹”可视
 34     }
 35
 36     /**
 37      * 创建窗体
 38      */
 39     public Folder() { // “文件夹”类的构造方法
 40         setResizable(false); // 不可改变窗体大小
 41         setTitle("按照模板创建文件夹"); // 设置窗体的题目
 42         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体的关闭方式
 43         setBounds(100, 100, 424, 200); // 设定该窗体的横、纵坐标,宽、高
 44         /**
 45          * 创建内容面板,设置面板的边距,布局(绝对布局),把内容面板放到窗体中
 46          */
 47         contentPane = new JPanel();
 48         contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
 49         setContentPane(contentPane);
 50         contentPane.setLayout(null);
 51         /**
 52          * 创建“请选择文件夹”的标签,设置标签的横、纵坐标,宽、高,字体内容和样式,把该标签放到内容面板中
 53          */
 54         JLabel lb_Choose = new JLabel("请选择文件夹:");
 55         lb_Choose.setFont(new Font("宋体", Font.PLAIN, 12));
 56         lb_Choose.setBounds(10, 30, 85, 20);
 57         contentPane.add(lb_Choose);
 58         /**
 59          * 创建输入“文件路径”的文本框,设置文本框的横、纵坐标,宽、高,字体内容和样式,把该文本框放到内容面板中
 60          */
 61         tf_Path = new JTextField();
 62         tf_Path.setFont(new Font("宋体", Font.PLAIN, 12));
 63         tf_Path.setBounds(95, 30, 215, 20);
 64         contentPane.add(tf_Path);
 65         tf_Path.setColumns(10);
 66         /**
 67          * 创建“浏览”按钮,设置按钮的横、纵坐标,宽、高,字体内容和样式,把该按钮放到内容面板中
 68          */
 69         JButton btn_Search = new JButton("浏 览");
 70         btn_Search.addActionListener(new ActionListener() { // 动作事件的监听
 71             public void actionPerformed(ActionEvent e) { // 发生操作时
 72                 JFileChooser jfc = new JFileChooser(); // 创建文件选择对话框
 73                 jfc.setDialogTitle("请选择要导出目录"); // 设置对话框的标题
 74                 jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); // 设置自允许获得路径
 75                 int result = jfc.showOpenDialog(getContentPane()); // 显示文件选择对话框
 76                 File file = null; // 创建一个空的文件对象
 77                 if (JFileChooser.APPROVE_OPTION == result) { // 判断用户单击的是否为“打开”按钮
 78                     file = jfc.getSelectedFile(); // 获得选中的文件对象
 79                     Path = file.getAbsolutePath() + "\\"; // 拼接编辑器识别的文件路径
 80                     tf_Path.setText(Path); // 把拼接好的文件路径写入到“文件路径”的文本框中
 81                 }
 82             }
 83         });
 84         btn_Search.setFont(new Font("宋体", Font.PLAIN, 12));
 85         btn_Search.setBounds(318, 30, 90, 20);
 86         contentPane.add(btn_Search);
 87         /**
 88          * 创建“添加文件夹:从”的标签,设置标签的横、纵坐标,宽、高,字体内容和样式,把该标签放到内容面板中
 89          */
 90         JLabel lb_From = new JLabel("添加文件夹:从");
 91         lb_From.setFont(new Font("宋体", Font.PLAIN, 12));
 92         lb_From.setBounds(10, 120, 85, 20);
 93         contentPane.add(lb_From);
 94         /**
 95          * 创建输入起始整型变量的文本框,设置文本框的横、纵坐标,宽、高,字体内容和样式,把该文本框放到内容面板中
 96          */
 97         tf_From = new JTextField();
 98         tf_From.setBounds(95, 120, 93, 20);
 99         contentPane.add(tf_From);
100         tf_From.setColumns(10);
101         /**
102          * 创建输入终止整型变量的文本框,设置文本框的横、纵坐标,宽、高,字体内容和样式,把该文本框放到内容面板中
103          */
104         tf_To = new JTextField();
105         tf_To.setBounds(213, 120, 93, 20);
106         contentPane.add(tf_To);
107         tf_To.setColumns(10);
108         /**
109          * 创建“到”的标签,设置标签的横、纵坐标,宽、高,字体内容和样式,把该标签放到内容面板中
110          */
111         JLabel lb_To = new JLabel("到");
112         lb_To.setFont(new Font("宋体", Font.PLAIN, 12));
113         lb_To.setBounds(196, 120, 15, 20);
114         contentPane.add(lb_To);
115         /**
116          * 创建“添加”按钮,设置按钮的横、纵坐标,宽、高,字体内容和样式,把该按钮放到内容面板中
117          */
118         JButton btn_Add = new JButton("添 加");
119         btn_Add.addActionListener(new ActionListener() { // 动作事件的监听
120             public void actionPerformed(ActionEvent e) { // 发生操作时
121                 if (rdbtnNum.isSelected()) {
122                     handleNum();
123                 }
124                 if (rdbtnChar.isSelected()) {
125                     handleChar();
126                 }
127             }
128         });
129         btn_Add.setFont(new Font("宋体", Font.PLAIN, 12));
130         btn_Add.setBounds(318, 120, 90, 20);
131         contentPane.add(btn_Add);
132         /**
133          * 单选按钮“数字型”
134          */
135         rdbtnNum = new JRadioButton("数字型");
136         rdbtnNum.setSelected(true);
137         rdbtnNum.addActionListener(new ActionListener() {
138             public void actionPerformed(ActionEvent e) {
139                 lblShow.setText("数字型样式:000001");
140             }
141         });
142         rdbtnNum.setFont(new Font("宋体", Font.PLAIN, 12));
143         rdbtnNum.setHorizontalAlignment(SwingConstants.CENTER);
144         rdbtnNum.setBounds(6, 86, 70, 23);
145         contentPane.add(rdbtnNum);
146         /**
147          * 单选按钮“非数字型”
148          */
149         rdbtnChar = new JRadioButton("非数字型");
150         rdbtnChar.addActionListener(new ActionListener() {
151             public void actionPerformed(ActionEvent e) {
152                 lblShow.setText("非数字型样式:Demo_001");
153             }
154         });
155         rdbtnChar.setFont(new Font("宋体", Font.PLAIN, 12));
156         rdbtnChar.setHorizontalAlignment(SwingConstants.CENTER);
157         rdbtnChar.setBounds(100, 86, 80, 23);
158         contentPane.add(rdbtnChar);
159         /**
160          * 单选按钮组
161          */
162         ButtonGroup buttonGroup = new ButtonGroup();
163         buttonGroup.add(rdbtnNum);
164         buttonGroup.add(rdbtnChar);
165         /**
166          * 样式标签
167          */
168         lblShow = new JLabel("数字型样式:000001");
169         lblShow.setFont(new Font("隶书", Font.PLAIN, 14));
170         lblShow.setHorizontalAlignment(SwingConstants.CENTER);
171         lblShow.setBounds(195, 86, 160, 23);
172         contentPane.add(lblShow);
173     }
174
175     public String getPattern(String str) { // 获得目标格式的方法
176         StringBuilder stringBuilder = new StringBuilder(); // 创建存储字符串的容器
177         for (int i = 0; i < str.length(); i++) { // 向字符串容器中添加与目标字符串长度一致的“0”
178             stringBuilder.append(0);
179         }
180         String pattern = stringBuilder.toString(); // 获得目标格式
181         return pattern; // 返回目标格式
182     }
183
184     public int getValidNum(String str) { // 获得有效数字的方法
185         char flag = ‘0‘; // 标志变量,用来与目标字符串中每个索引位置上的字符进行比较
186         int index = 0; // 初始化字符串中第一位不为“0”的字符的索引值
187         for (int i = 0; i < str.length(); i++) { // 通过循环,使用标志变量与目标字符串中每个索引位置上的字符进行比较
188             if (flag != str.charAt(i)) { // 目标字符串中索引位置上的字符不为“0”时
189                 index = i; // 获得字符串中第一位不为“0”的字符的索引值
190                 break; // 终止循环
191             }
192         }
193         String tempResult = str.substring(index, str.length()); // 获得有效数字
194         int validNum = Integer.parseInt(tempResult); // 数据类型转换得到int类型的有效数字
195         return validNum; // 有效数字
196     }
197
198     public void handleNum() { // 处理选择“数字型”的方法
199         try {
200             if (tf_From.getText().length() == tf_To.getText().length()) { // 如果“从”后的文本框中的文本长度等于“到”后的文本框中的文本长度
201                 // 获得文本框中的文本内容
202                 String strFrom = tf_From.getText();
203                 String strTo = tf_To.getText();
204                 // 获得有效数字(例如:0000000012的有效数字是12)
205                 int num_From = getValidNum(strFrom);
206                 int num_To = getValidNum(strTo);
207                 if (num_From >= num_To) { // 当起始整型变量大于等于终止整型变量时的弹出框内容
208                     JOptionPane.showMessageDialog(null, "数据输入格式错误!\n“从”后的文本框中的有效数字要小于\n“到”后的文本框中的有效数字。", "警告",
209                             JOptionPane.ERROR_MESSAGE);
210                 } else { // 当起始整型变量小于终止整型变量时
211                     DecimalFormat df = new DecimalFormat(getPattern(strFrom)); // 根据目标格式,格式化文件名
212                     for (int i = num_From; i <= num_To; i++) { // 通过循环创建文件
213                         File file = new File(Path + df.format(i)); // 按照指定路径生成文件夹
214                         if (!file.exists()) { // 如果文件不存在
215                             file.mkdir(); // 创建此抽象路径名指定的目录
216                         }
217                     }
218                     JOptionPane.showMessageDialog(null, "文件夹创建成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
219                 }
220             } else {
221                 JOptionPane.showMessageDialog(null, "输入的文本内容长度不一致!\n请重新输入...", "警告", JOptionPane.ERROR_MESSAGE);
222             }
223         } catch (NumberFormatException e) {
224             JOptionPane.showMessageDialog(null, "请参照指定样式输入数据!", "警告", JOptionPane.ERROR_MESSAGE);
225         }
226     }
227
228     public void handleChar() { // 处理选择“非数字型”的方法
229         try {
230             if (tf_From.getText().length() == tf_To.getText().length()) { // 如果“从”后的文本框中的文本长度等于“到”后的文本框中的文本长度
231                 // 获得文本框中的文本内容
232                 String strFrom = tf_From.getText();
233                 String strTo = tf_To.getText();
234                 // 拆分文本框中的文本内容
235                 String[] targetFrom = strFrom.split("_");
236                 String[] targetTo = strTo.split("_");
237                 if (targetFrom[0].equals(targetTo[0])) {
238                     // 获得有效数字(例如:0000000012的有效数字是12)
239                     int num_From = getValidNum(targetFrom[1]);
240                     int num_To = getValidNum(targetTo[1]);
241                     if (num_From >= num_To) { // 当起始整型变量大于等于终止整型变量时的弹出框内容
242                         JOptionPane.showMessageDialog(null, "数据输入格式错误!\n“从”后的文本框中的有效数字要小于\n“到”后的文本框中的有效数字。", "警告",
243                                 JOptionPane.ERROR_MESSAGE);
244                     } else { // 当起始整型变量小于终止整型变量时
245                         DecimalFormat df = new DecimalFormat(getPattern(targetFrom[1])); // 根据目标格式,格式化文件名
246                         for (int i = num_From; i <= num_To; i++) { // 通过循环创建文件
247                             File file = new File(Path + targetFrom[0] + "_" + df.format(i)); // 按照指定路径生成文件夹
248                             if (!file.exists()) { // 如果文件不存在
249                                 file.mkdir(); // 创建此抽象路径名指定的目录
250                             }
251                         }
252                         JOptionPane.showMessageDialog(null, "文件夹创建成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
253                     }
254                 } else {
255                     JOptionPane.showMessageDialog(null, "输入的文本内容字符不一致!\n请重新输入...", "警告", JOptionPane.ERROR_MESSAGE);
256                 }
257             } else {
258                 JOptionPane.showMessageDialog(null, "输入的文本内容长度不一致!\n请重新输入...", "警告", JOptionPane.ERROR_MESSAGE);
259             }
260         } catch (Exception e) { // 当输入的文本内容不能转换为int型时的弹出框内容
261             JOptionPane.showMessageDialog(null, "请参照指定样式输入数据!", "警告", JOptionPane.ERROR_MESSAGE);
262         }
263     }
264 }

谢谢、Thank you、Salamat Do(撒拉玛特朵)、あリがCám o*n(嘉蒙)とゥ(阿里嘎都)、????? (勘三哈咪瘩)、terima Kasih(得力马卡系)、kob-khun(寇布库恩)、dhanyavaad(达尼阿瓦德)、toda(透达)、te?ekkür ederim(特谢库尔埃戴里姆)、Dzie,kuje(以库以而)、Spasibo(思巴喜柏)、Danke(但可)、shokran(休克朗)、Obrigada(欧布哩嘎搭)、dank u(当Q)、Merci(梅呵西)、Gracias(格拉喜亚思)、Grazie(格啦姬)、Благодарности、Tak、Kiitos、Díky、Hvala、Mul?umesc、Takk、Ευχαριστ



使用JFileChooser实现在指定文件夹下批量添加根据“数字型样式”或“非数字型样式”命令的文件夹

原文地址:https://www.cnblogs.com/YUJIE666/p/9911534.html

时间: 2024-10-11 21:54:54

使用JFileChooser实现在指定文件夹下批量添加根据“数字型样式”或“非数字型样式”命令的文件夹的相关文章

根据数字型样式或非数字型样式创建文件夹

2018-10-31 17:14:17  开始写 数字型 非数字型 1 import javax.swing.JFrame; 2 import javax.swing.JPanel; 3 import javax.swing.border.EmptyBorder; 4 import javax.swing.JLabel; 5 import javax.swing.JOptionPane; 6 7 import java.awt.Font; 8 import javax.swing.JTextFi

linux--文件夹下批量改动IP

sed -i 's/10.11/10.22/g' `grep ir 10.11 *| grep -E'.xml:|.cfg:|.ini:|.wsdl|.properties:' |awk -F:'{print $1}' |uniq` 当中10.11是原IP,10.22是新IP. '.xml:|.cfg:|.ini:|.wsdl|.properties:'  为要改动的配置文件:

Linux下批量添加用户

首先要创建一个包含所有用户名的文件,我使用的是user这个文件,这个文件里面包含了6个用户,如图所示 脚本内容 #!/bin/bash read -p "输入用户密码:" PASSWD for UNAME in `cat user` do id $UNAME &> /dev/null if [ $? -eq 0 ] then echo "$UNAME,用户存在" else useradd $UNAME &> /dev/null echo

如何批量修改文件夹下的文件名

在工作或者平时生活中,我们有时候会遇到大批量的文件名需要重命名,十几二十个文件进行一个一个命名还是可以的,但如果涉及到成百上千个文件需要重命名,那一个一个改的方法显然太耗费时间和精力了,如果任务比较紧急的情况下,有时候还会误事.那么有什么办法可以简单一点重命名呢?笔者通过搜索,终于找到了比较合适的方法进行来解决这个问题,下面是操作的步骤. 第一步:获取这些不规则文件的文件名: 打开需要更改文件名的文件夹: 在这个文件夹下,新建一个txt文件,并在其中输入DIR *.*  /B >LIST.csv

巧用FTP命令进行文件传输

巧用FTP进行文件传输 Internet作为现代信息高速公路已深入我们的生活,其中它所提供的电子邮件Web网站信息服务已被越来越多的人所熟知和使用.FTP作为Internet的功能之一,虽然没有像E-mail和Web网站信息服务那样得到广泛使用,但是它在Internet上的文件传输功能,受到了一些专业人士的青睐. ---- 下面向您介绍两则利用FTP进行文件传输的方法. 一.批量文件传输法 ---- 适用范围: 单纯文件传输,同时文件名又有一定的规律性,如有相同的文件扩展名等. ---- 使用环

JavaSE8基础 File list 获取指定文件夹下的第一层文件和文件夹的名字

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) information: 被查看文件夹中的内容截图. code: package jizuiku0; import java.io.File; /* * @version V17.09 */ public class GetName { public static void main(String[] args) { String

每日学习心得:SharePoint 为列表中的文件夹添加子项(文件夹)、新增指定内容类型的子项、查询列表中指定的文件夹下的内容

前言: 这里主要是针对列表中的文件下新增子项的操作,同时在新建子项时,可以为子项指定特定的内容类型,在某些时候需要查询指定的文件夹下的内容,针对这些场景都一一给力示例和说明,都是一些很小的知识点,希望能够对大家有所帮助. 1.   在列表中为列表项添加子项 为列表添加子项大家都很熟悉,但是如何为列表项添加子项呢?例如列表项是一个文件夹,如何为该文件夹添加子项呢?这里就用到了List.AddItem()方法,具体示例如下: 首先我们要获取列表中的子项: SPListItem root_item=l

遍历指定文件夹下的所有图片,并复制到指定目录下

import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; public class Copy { /** * 遍历文件夹下的所有图片文件,并复制到指定文件夹下 */ static String srcfile = "E:/I

获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中)

import java.io.File; import java.io.FileFilter; import java.io.ObjectInputStream.GetField; import java.util.ArrayList; import java.util.List; public class huoquwenjian { /*获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中) * 思路: * 1,既然包含子目录,就需要递归. * 2