国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

Java文件批量重命名批量提取特定類型文件

2019-11-26 13:55:19
字體:
供稿:網(wǎng)友

原因:

  因?yàn)樵诰W(wǎng)上下載視頻教程,有的名字特別長(zhǎng),一般都是機(jī)構(gòu)或者網(wǎng)站的宣傳,不方便直接看到視頻的簡(jiǎn)介,所以做了下面的第一個(gè)功能。

  因?yàn)槔蠋煱l(fā)的課件中,文件夾太多,想把docx都放在同一個(gè)文件夾下面,一個(gè)一個(gè)找出來太麻煩,所以做了第二個(gè)功能。

最近剛剛學(xué)了Java文件和流的知識(shí),所以正好練練手,這也是自己的第一個(gè)exe程序,分享一下哈。

  (導(dǎo)出jar文件,以及用工具exe4j生成exe文件,這部分省略了哈)

用到的知識(shí):

  用到Java中文件,流的知識(shí),以及簡(jiǎn)單的GUI知識(shí)。

功能:

   功能一:去除文件名字的某些關(guān)鍵字,也可以設(shè)置代替字。

   功能二:提取一個(gè)路徑下面所有特定類型的文件,然后放在一個(gè)新的文件夾下面,如果有重復(fù)的文件,則自動(dòng)排序在后面加數(shù)字來區(qū)分。

先看下啟動(dòng)后的界面和生成的exe文件:

第一個(gè)功能演示:

  沒有操作前的:

  操作后:把前面部分相同關(guān)鍵字全部去掉了

  還有撤回功能:

第二個(gè)功能演示:

  沒有操作前:

  操作后:

  當(dāng)然,也有撤回功能

源代碼分析:

啟動(dòng)類:

package guuze;public class Test {public static void main(String[] args) {//啟動(dòng)GUI,即用戶界面new ShowGui();}}

顯示GUI類:

package guuze;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.File;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextField;public class ShowGui {private JFrame f;private JButton b1;private JButton b2;private JButton b3;private JTextField tf1;private JTextField tf2;private JTextField tf3;private JButton b4;private JButton b5;private JButton b6;private JTextField tf4;private JTextField tf5;private JTextField tf6;private static String s1;public ShowGui() {// 直接調(diào)用startGui();}public void startGui() {f = new BgSet();// 用來設(shè)置背景圖片f.setLayout(new FlowLayout());Image icon = Toolkit.getDefaultToolkit().getImage("image/4.jpg");// 設(shè)置左上角logo圖標(biāo)f.setIconImage(icon);// 6個(gè)按鈕b1 = new JButton("開始");b2 = new JButton("撤回");b3 = new JButton("退出");b4 = new JButton("一鍵提取");b5 = new JButton("撤回");b6 = new JButton("退出");// 6個(gè)按鈕的大小b1.setPreferredSize(new Dimension(89, 39));b2.setPreferredSize(new Dimension(89, 39));b3.setPreferredSize(new Dimension(89, 39));b4.setPreferredSize(new Dimension(89, 39));b5.setPreferredSize(new Dimension(89, 39));b6.setPreferredSize(new Dimension(89, 39));// 6個(gè) 文本框的大小以及輸入字體的屬性tf1 = new JTextField("Please input absolute_path", 40);tf1.setFont(new Font("宋體", Font.PLAIN, 25));tf1.setBounds(200, 15, 550, 126);tf2 = new JTextField("Please input keyWords", 40);tf2.setFont(new Font("宋體", Font.PLAIN, 25));tf2.setBounds(200, 15, 550, 126);tf3 = new JTextField("Please input replaceWords", 40);tf3.setFont(new Font("宋體", Font.PLAIN, 25));tf3.setBounds(200, 15, 550, 126);tf4 = new JTextField("Please input absolute_path", 40);tf4.setFont(new Font("宋體", Font.PLAIN, 25));tf4.setBounds(200, 15, 550, 126);tf5 = new JTextField("Please input target_path", 40);tf5.setFont(new Font("宋體", Font.PLAIN, 25));tf5.setBounds(200, 15, 550, 126);tf6 = new JTextField("Please input filetype", 40);tf6.setFont(new Font("宋體", Font.PLAIN, 25));tf6.setBounds(200, 15, 550, 126);// 把按鈕和文本框添加上f.add(tf1);f.add(tf2);f.add(tf3);f.add(b1);f.add(b2);f.add(b3);f.add(tf4);f.add(tf5);f.add(tf6);f.add(b4);f.add(b5);f.add(b6);// 調(diào)用事件監(jiān)聽函數(shù)myEvent();f.setVisible(true);}private void myEvent() {// 點(diǎn)擊右上角×退出f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});// 點(diǎn)擊第一個(gè)按鈕的響應(yīng)事件b1.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {s1 = tf1.getText();// 對(duì)文本框內(nèi)值進(jìn)行判斷,如果什么也沒寫,當(dāng)做空處理,以下的類似if (s1.equals("Please input path")) {s1 = "";}File file = new File(s1);String test[];test = file.list();RenameFunction.test1 = test;String s2 = tf2.getText();if (s2.equals("Please input replaceWords")) {s2 = "";}String s3 = tf3.getText();if (s3.equals("Please input replaceWords")) {s3 = "";}try {// 啟動(dòng)重命名函數(shù)RenameFunction.sure(s1, s2, s3);} catch (Exception e1) {}}});// 點(diǎn)擊第二個(gè)按鈕的響應(yīng)事件b2.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {try {try {if (!s1.equals("Please input path")) {// 啟動(dòng)撤回RevokeRename.revoke(s1);}} catch (Exception e2) {}} catch (Exception e1) {}}});// 點(diǎn)擊第三個(gè)按鈕的響應(yīng)事件b3.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {System.exit(0); // 退出}});// 點(diǎn)擊第四個(gè)按鈕的響應(yīng)事件b4.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {String s2 = tf4.getText();String s3 = tf5.getText();String s4 = tf6.getText();if (s2.equals("Please input absolute_path")) {s2 = "";}if (s3.equals("Please input target_path")) {s3 = "";}if (s4.equals("Please input filetype")) {s4 = "";}// 啟動(dòng)文件搜索函數(shù)SearchFileFunction.startCopy(s2, s3, s4);}});// 點(diǎn)擊第五個(gè)按鈕的響應(yīng)事件b5.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {String s2 = tf5.getText();// 啟動(dòng)撤回函數(shù)RemoveTargetFile.startDelete(s2);}});// 點(diǎn)擊第六個(gè)按鈕的響應(yīng)事件b6.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {System.exit(0); // 退出}});}}

GUI背景圖片設(shè)置類:

package guuze;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class BgSet extends JFrame {private static final long serialVersionUID = 1L;public BgSet() {// 設(shè)置標(biāo)題super("GreatFish");setBounds(100, 100, 600, 600);// 背景圖片的路徑。String path = "image/3.jpg";ImageIcon background = new ImageIcon(path);JLabel label = new JLabel(background);label.setBounds(0, 0, this.getWidth(), this.getHeight());JPanel imagePanel = (JPanel) this.getContentPane();imagePanel.setOpaque(false);this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));}}

文件重命名類:

package guuze;import java.io.File;import java.util.Scanner;public class RenameFunction {static Scanner input = new Scanner(System.in);public static String test1[];public static void sure(String s1, String s2, String s3) throws Exception {File file = new File(s1);String test[];test = file.list();// 遍歷文件的名字for (int i = 0; i < test.length; i++) {// 判斷是不是有你想去除的關(guān)鍵字if (test[i].indexOf(s2) != -1) {// 保存重命名后的文件名test[i] = test[i].replace(s2, s3);}}File[] files = file.listFiles();for (int i = 0; i < test.length;) {for (File f : files) {if (f.isFile()) {// 循環(huán)賦重命名后的名字f.renameTo(new File(s1 + "/" + test[i++]));}}}}}

文件重命名撤回函數(shù)類:

package guuze;import java.io.File;public class RevokeRename {public static void revoke(String s1) throws Exception {// 重新賦回原來的名字File file = new File(s1);File[] files = file.listFiles();for (int i = 0; i < RenameFunction.test1.length;) {for (File f : files) {if (f.isFile()) {// 注意是test1f.renameTo(new File(s1 + "/" + RenameFunction.test1[i++]));}}}}}

文件復(fù)制類:

package guuze;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class SearchFileFunction {static int count = 1;public static void startCopy(String source_path, String target_path,String file_Type) {// 啟動(dòng)循環(huán)函數(shù)xunHuan(source_path, target_path, file_Type);}public static void xunHuan(String source_path, String target_path,String file_Type) {File file = new File(source_path);String names[] = file.list();// 判斷是不是文件以及是否以你想要的文件類型結(jié)尾if (file.isFile() && file.getAbsolutePath().endsWith(file_Type)) {String new_path = target_path + "/" + file.getName();File file1 = new File(new_path);if (!file1.exists()) {try {file1.createNewFile();} catch (IOException e) {}} else {// 如果文件名字相同,在點(diǎn)前面加數(shù)字進(jìn)行區(qū)分// 注意用//.進(jìn)行分隔,而不是.String[] arr = new_path.split("http://.");String new_path1 = arr[0] + count + "." + arr[1];file1.renameTo(new File(new_path1));}// 是文件,所以開始復(fù)制文件fileCopyByBufferStreamArray(file.getAbsolutePath(), new_path);}else if (file.isFile() && !file.getAbsolutePath().endsWith(file_Type)) {// 注意這個(gè)方法體中什么都不寫,就是不做處理} else {for (int i = 0; i < names.length; i++) {// 不是文件,進(jìn)行迭代xunHuan(file.getAbsolutePath() + "/" + names[i], target_path,file_Type);}}}public static void fileCopyByBufferStreamArray(String srcFile,String targetFile) {// 用流的知識(shí)進(jìn)行寫文件File file = new File(srcFile);File file1 = new File(targetFile);FileInputStream fis = null;FileOutputStream fos = null;BufferedInputStream bis = null;BufferedOutputStream bos = null;try {fis = new FileInputStream(file);fos = new FileOutputStream(file1);bis = new BufferedInputStream(fis);bos = new BufferedOutputStream(fos);int len = 0;byte[] b = new byte[10];while ((len = bis.read(b)) != -1) {bos.write(b, 0, len);}bos.flush();} catch (IOException e) {} finally {try {fis.close();fos.close();bis.close();bos.close();} catch (IOException e) {}}}}

文件復(fù)制撤回類:

package guuze;import java.io.File;public class RemoveTargetFile {public static void startDelete(String path) {File file = new File(path);deleteFile(file);}private static void deleteFile(File file) {// 記住不要把路徑的那個(gè)文件夾刪掉了if (file.exists()) {if (file.isFile()) {// 是文件,直接刪除file.delete();} else if (file.isDirectory()) {File[] files = file.listFiles();for (int i = 0; i < files.length; i++) {// 如果不是文件,進(jìn)行迭代deleteFile(files[i]);}}}}}

以上所述是小編給大家介紹的Java文件批量重命名批量提取特定類型文件,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西吉县| 日土县| 开化县| 罗源县| 海晏县| 七台河市| 鱼台县| 大邑县| 电白县| 兴城市| 延长县| 凌源市| 海安县| 虹口区| 广丰县| 长宁县| 蒲城县| 日喀则市| 华坪县| 新巴尔虎左旗| 渝北区| 阳西县| 绥滨县| 花莲县| 平乐县| 张掖市| 厦门市| 增城市| 香港| 安国市| 德江县| 博野县| 东城区| 岳西县| 福海县| 和静县| 乐山市| 宜兰市| 兖州市| 万州区| 琼结县|