java按指定后缀复制文件并保留原始文件夹路径

为了只复制java原代码文件,不要class文件或其他不需要的文件,写的一个java窗口小程序

指定文件后缀,原始文件文件夹路径,目的文件夹路径,如原始路径为,D:\Projects,目的路径为C:\User\ABC\Desktop\newProject\,

要复制.java文件,复制后的路径为C:\User\ABC\Desktop\newProject\Projects\...不改变原路径,只复制.java文件

  1 package copyfile;
  2 /**
  3  * @author ycl
  4  * @date 2017年6月9日 下午7:31:18
  5  * for copy file by postfix
  6  */
  7
  8 import java.awt.*;
  9 import java.awt.event.*;
 10 import java.io.BufferedReader;
 11 import java.io.BufferedWriter;
 12 import java.io.File;
 13 import java.io.FileReader;
 14 import java.io.FileWriter;
 15 import java.io.Reader;
 16 import java.io.Writer;
 17 import java.util.ArrayList;
 18 import java.util.List;
 19
 20 import javax.swing.*;
 21 import javax.swing.filechooser.FileSystemView;
 22
 23 import org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper;
 24
 25 public class CopyFile extends JFrame implements ActionListener {
 26     /**
 27      *
 28      */
 29     private static final long serialVersionUID = 1L;
 30     JLabel jlblSourcePath;
 31     JLabel jlblDestPath;
 32     JLabel jlblPostfix;
 33
 34     JLabel jlblStatu;
 35
 36     JTextField jtfSourcePath;
 37     JTextField jtfDestPath;
 38     JTextField jtfPostfix;
 39
 40     JButton jbSelectSP;
 41     JButton jbSelectDP;
 42
 43     JButton jbOK;
 44
 45     JPanel jPanel = new JPanel();
 46     List<String> list = new ArrayList<>();
 47
 48     public CopyFile() {
 49         this.setTitle("Copy File By Postfix");
 50         this.setContentPane(jPanel);
 51         this.setLayout(null);
 52         this.setBounds(500, 200, 600, 300);
 53         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 54
 55         Font font = new Font("Courier", Font.ROMAN_BASELINE, 16);
 56         jlblSourcePath = new JLabel("Source Path:");
 57         jlblSourcePath.setBounds(10, 10, 100, 20);
 58         jlblSourcePath.setFont(font);
 59         jPanel.add(jlblSourcePath);
 60
 61         jlblDestPath = new JLabel("Destination Path:");
 62         jlblDestPath.setBounds(10, 70, 200, 20);
 63         jlblDestPath.setFont(font);
 64         jPanel.add(jlblDestPath);
 65
 66         jlblPostfix = new JLabel("postfix");
 67         jlblPostfix.setBounds(320, 10, 100, 20);
 68         jlblPostfix.setFont(font);
 69         jPanel.add(jlblPostfix);
 70
 71         jtfSourcePath = new JTextField("select source path");
 72         jtfSourcePath.setBounds(10, 35, 300, 25);
 73         jPanel.add(jtfSourcePath);
 74         jtfDestPath = new JTextField("select distinction path");
 75         jtfDestPath.setBounds(10, 95, 300, 25);
 76         jPanel.add(jtfDestPath);
 77         jtfPostfix = new JTextField("java"); // 后缀
 78         jtfPostfix.setBounds(320, 35, 80, 25);
 79         jPanel.add(jtfPostfix);
 80
 81         jbSelectSP = new JButton("SELECT");
 82         jbSelectSP.setBounds(410, 35, 100, 25);
 83         jPanel.add(jbSelectSP);
 84         jbSelectSP.setFont(font);
 85         jbSelectSP.addActionListener(this);
 86
 87         jbSelectDP = new JButton("SELECT");
 88         jbSelectDP.setBounds(320, 95, 190, 25);
 89         jPanel.add(jbSelectDP);
 90         jbSelectDP.addActionListener(this);
 91         jbSelectDP.setFont(font);
 92
 93         jbOK = new JButton("OK");
 94         jbOK.setBounds(10, 150, 510, 30);
 95         jPanel.add(jbOK);
 96         jbOK.addActionListener(this);
 97         jbOK.setFont(new Font("Courier", Font.BOLD, 20));
 98         jbOK.setForeground(Color.blue);
 99
100
101         jlblStatu = new JLabel("[email protected]  By Yin.cl", JLabel.CENTER);
102         jlblStatu.setBounds(10, 197, 520, 25);
103         jPanel.add(jlblStatu);
104
105         this.setVisible(true);
106         this.setResizable(false);
107
108     }
109
110     // get all filePath list from given path
111     public void getFileList(String path, String postfix) {
112         File file = new File(path);
113         postfix = jtfPostfix.getText();
114         File[] fileList = null;
115         if (file.exists()) {
116             fileList = file.listFiles();
117             if (fileList != null && fileList.length > 0) {
118                 for (File f : fileList) {
119                     if (f.isDirectory()) {
120                         getFileList(f.getAbsolutePath(), postfix);
121                     } else if (f.isFile()) {
122                         String[] strArr = f.getName().split("\\.");
123                         if (strArr[strArr.length - 1].equalsIgnoreCase(postfix)) {
124                             list.add(f.getAbsolutePath());
125                         }
126                     }
127                 }
128             }
129         } else {
130             System.out.println("Given path is not exist!");
131         }
132     }
133
134     // get select directory path for button select path
135     public String getSelectPath(String title) {
136         int result = 0;
137         String path = null;
138         JFileChooser fileChooser = new JFileChooser();
139         FileSystemView fsv = FileSystemView.getFileSystemView(); // this is importent
140         fileChooser.setCurrentDirectory(fsv.getHomeDirectory());
141         fileChooser.setDialogTitle(title);
142         fileChooser.setApproveButtonText("确定");
143         fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
144         result = fileChooser.showOpenDialog(this);
145         if (JFileChooser.APPROVE_OPTION == result) {
146             path = fileChooser.getSelectedFile().getPath();
147         }
148         return path;
149     }
150
151     // click buttonOK
152     public void startExec() {
153         String path = jtfSourcePath.getText();
154         String postfix = jtfPostfix.getText();
155         list.clear();  //clean pre times fileList
156         getFileList(path, postfix);
157         String dpath = jtfDestPath.getText();
158         if (list != null) {
159             for (String str : list) {
160                 try {
161                     Reader r = new FileReader(new File(str));
162                     String tempStr = str.split("\\:")[1];
163                     File newFile = new File(dpath + tempStr);
164                     if (!newFile.getParentFile().exists()) {
165                         newFile.getParentFile().mkdirs();
166                     }
167                     Writer w = new FileWriter(newFile);
168                     BufferedReader br = new BufferedReader(r);
169                     BufferedWriter bw = new BufferedWriter(w);
170                     String line = null;
171                     while ((line = br.readLine()) != null) {
172                         bw.write(line + "\r\n");
173                     }
174                     bw.close();
175                     w.close();
176                     br.close();
177                     r.close();
178                 } catch (Exception ex) {
179                     showMessage(ex.toString());
180                 }
181             }
182             showMessage("--Success--\n");
183         }
184     }
185
186     // Check the sourcepath is equals distinationpath
187     public boolean checkPath(String spath, String dpath) {
188         if (spath != null && dpath != null) {
189             if (spath.equalsIgnoreCase(dpath)) {
190                 return true;
191             }
192         }
193         return false;
194     }
195
196     // show message
197     public void showMessage(String msg) {
198         JOptionPane.showInternalMessageDialog(jPanel, msg, "Tips", JOptionPane.INFORMATION_MESSAGE);
199     }
200
201     @Override
202     public void actionPerformed(ActionEvent e) {
203         String path = null;
204         if (e.getSource().equals(jbSelectSP)) {
205             path = getSelectPath("Select Source Path");
206             jtfSourcePath.setText(path);
207             if (checkPath(path, jtfDestPath.getText())) {
208                 showMessage("This path is equals the distination path\n please select another one");
209                 jtfSourcePath.setText("");
210
211             }
212         } else if (e.getSource().equals(jbSelectDP)) {
213             path = getSelectPath("Select Destination Path");
214             jtfDestPath.setText(path);
215             if (checkPath(path, jtfSourcePath.getText())) {
216                 jtfDestPath.setText("");
217                 showMessage("This path is equals the source path\n please select another one");
218             }
219         } else if (e.getSource().equals(jbOK)) {
220             if (jtfSourcePath.getText().isEmpty() || jtfDestPath.getText().isEmpty()) {
221                 showMessage("The Folder path is empty,\nplease check it.");
222             } else {
223                 startExec();
224             }
225         }
226
227     }
228
229     public static void main(String[] args) {
230         try {
231             BeautyEyeLNFHelper.launchBeautyEyeLNF();
232             UIManager.put("RootPane.setupButtonVisible", false);
233         } catch (Exception e) {
234             e.printStackTrace();
235         }
236         new CopyFile();
237     }
238 }

效果图(皮肤jar包名:SwingSets3.jar)>>>

时间: 2024-10-23 06:41:40

java按指定后缀复制文件并保留原始文件夹路径的相关文章

环境变量,属性文件,文件基础操作,目录基础操作,遍历指定后缀名文件

环境变量和属性 环境变量相关: 1.得到某个/所有环境变量的值 2.设置环境变量的值 3.列出全部系统属性名 import java.util.Enumeration; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; public class Environment { public static void main(String[] args) { // TODO Auto-gener

java移动文件夹、 慎用java file.renameTo(f)方法 、 java从一个目录复制文件到另一个目录下 、 java代码完成删除文件、文件夹 、

java移动文件夹(包含子文件和子文件夹): http://blog.csdn.net/yongh701/article/details/45070353 慎用java    file.renameTo(f)方法: http://www.cnblogs.com/mrwangblog/p/3934506.html 注意看结果,从C盘到E盘失败了,从C盘到D盘成功了.因为我的电脑C.D两个盘是NTFS格式的,而E盘是FAT32格式的.所以从C到E就是上面文章所说的"file systems"

java 复制指定后缀名文件并修改其后缀名

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; /** * 将c:\cn目录下的所有.java文件复制到c:\test目录下,并将原来文件的扩展名从.java改为.wl. * @author wl * @time

java: file/outputStream/InputStream 复制文件

java i/o 复制文件 public static void main(String[] args) throws Exception { // TODO 自动生成的方法存根 if(args.length != 2) { System.out.println("您输入的参数有误"); System.exit(1); } if(args[0].equals(args[1])) { System.out.println("源文件和目标文件不能一致"); System

java使用指定的国际化文件

java代码: import java.util.Locale; import org.junit.Test; /** * 使用指定的国际化文件 */ public class Demo { @Test public void testName1() throws Exception { // 指定国际化为中国中文 Locale locale = new Locale("zh", "CN"); /* * getBundle的第一个参数(baseName): * |-

递归复制&amp;查看文件夹下的指定后缀的文件

<?php header("content-type:text/html;charset=utf8"); set_time_limit(0); $dir = "d:\\"; function show ($dir){ $handle = @opendir($dir); echo "<ul>"; while($file = @readdir($handle)){ if($file == "."||$file =

删除指定目录下的指定后缀的文件

1 import java.io.*; 2 import javax.swing.*; 3 public class Delete{ 4 public static void main(String[] args)throws Exception{ 5 String target = JOptionPane.showInputDialog(null,"请输入您要清理垃圾的目录:"); 6 File[] fs = new File(target).listFiles(new Filena

定期清理 2周前 指定目录 指定层级 指定后缀 的文件

0 2 * * * find /tftpboot -maxdepth 1 -mtime +14 -name "*.img" -exec rm -rf {} \; 每隔2小时,去搜寻 /tftpboot 本级目录下,修改时间是14天前的,后缀是img的文件:并把它们一一删除掉: crontab 命令格式 基本格式 : * * * * * command 分 时  日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-

Linux批量删除指定后缀的文件

刚才遇到一个问题:从本地文件系统上传一个文件夹至HDFS作为Hadoop程序的输入数据,但是程序报错,原因是Ubuntu针对每个.txt文件生成了.txt~备份文件,所以我要把这些备份文件批量删除然后再上传 进入文件夹所在目录,然后执行命令: [email protected]:/usr/local/hadoop/movieinput$ find . -name '*.txt~' -type f -print -exec rm -rf {} \;