Windowsオペレーティングシステムは、ファイルの名前の変更を実装できますが、バッチの名前変更を実装できません。この例では、バッチの名前変更機能を実装し、特定のルールに従って同じタイプのファイルをフォルダー内に変更することができます。ユーザーはテンプレートの名前を変更することができ、プログラムはテンプレートに従って対応するファイルの名前を変更できます。さらに、名前の変更テンプレートに特別なシンボルを追加でき、プログラムはこれらの特別なシンボルを変更されたファイル番号に置き換えます。
アイデア分析:
1。最初に、いくつかのJLabelコントロールがユーザーを示す情報を表示し、ファイル名テンプレートを入力し、2つのJButtonコントロールを使用します。繰り返しを開始します。JSEParatorコントロールはスプリットラインを表し、jspinnerコントロールは開始数を表し、jscrollpaneコントロールはコンテナとして機能し、jtableコントロールは古いファイル名と新しいファイル名をリストするために内部に配置されます。
2。モデル層をもう一度見てください。まず、ブラウジングボタンのイベント処理方法を定義し、この方法でjfilechooserファイルセレクターを作成し、jfilechooserクラスのsetFileSelectionMode()メソッドを使用して選択したフォルダーのみを設定し、[表示]ダイアログボックスを表示し、showopendialog()を介して表示するダイアログボックスを表示します。 JFIleChooserクラスは、ボタンがJFILeChooserクラスのgetSelectedFile()メソッドを使用して選択したフォルダーを取得し、最後にJTextFieldコントロールのsetText()メソッドを使用してフォルダー情報を表示することを確認します。
3.クラスを定義してFileFilterインターフェイスを実装し、クラスのコンストラクターにファイル拡張子を保存してから、StringクラスのEndSwith()メソッドを使用してファイル拡張子をフィルタリングするメソッドを定義します。
4.最初に、JTExtFieldコントロールのgetText()メソッドを使用して、テンプレートを取得すると、ユーザーがshowmessageialog()を介してテンプレートを入力するように求められます。 JoptionPaneクラスのメソッド、DefaultTableModelオブジェクトを作成し、JTableクラスを使用します()JSPINNERクラスのメソッド開始番号を取得し、文字列クラスのインデックスのインデックスメソッドを使用して最初の「#」を取得しますstringクラスSubstring()メソッドのインデックスを使用してテンプレート内の番号プレースホルダー文字列を取得します、および文字列クラスの交換()メソッドを使用して、テンプレート内の番号プレースホルダー文字列を取得します。テンプレートの数字を指定された形式に置き換えて、stringクラスの使用を標準化して、ユーザーが入力しない場合は "、"。次に、ファイルクラスlistfiles()メソッドを使用して、フォルダーにファイルリスト配列を取得し、foreach()を使用して各ファイルをループし、文字列クラスのformat()メソッドを介して各ファイル名をフォーマットし、addrow()メソッドを使用します。 DefaultTableModelクラスの古いファイルをターンすると、テーブルのデータモデルに新しい名前を追加します。ファイルクラスのメソッドを使用して、ターゲットファイルが配置されているフォルダーオブジェクトを取得し、ファイルオブジェクトを作成して初期化します新しいファイル名に、最後にファイルクラスのrenameto()メソッドを使用してファイルの変更を実装します。
コードは次のとおりです。
コードコピーは次のとおりです。
java.awt.eventqueueをインポートします。
java.awt.event.actioneventをインポートします。
java.awt.event.actionlistenerをインポートします。
java.io.fileをインポートします。
java.io.filefilterをインポートします。
javax.swing.jbuttonをインポートします。
javax.swing.jfilechooserをインポートします。
javax.swing.jframeをインポートします。
javax.swing.jlabelをインポートします。
javax.swing.joptionpaneをインポートします。
javax.swing.jpanelをインポートします。
javax.swing.jscrollpaneをインポートします。
javax.swing.jseparatorをインポートします。
javax.swing.jspinnerをインポートします。
javax.swing.jtableをインポートします。
javax.swing.jtextfieldをインポートします。
javax.swing.border.emptyborderをインポートします。
javax.swing.table.defaultTableModelをインポートします。
java.awt.gridbaglayoutをインポートします。
java.awt.gridbagconstraintsをインポートします。
java.awt.insetsをインポートします。
/**
*ファイルリストのフィルターを取得します
*
* @author li Zhongwei
*/
public class namefilesはjframeを拡張します{
/**
*
*/
private static final long serialversionuid = 453437110602473867l;
プライベートファイナルクラスextnameFilefilterはfilefilterを実装します{
プライベート文字列extname;
public extnamefilefilter(string extname){
this.extname = extname; //ファイル拡張子を保存します
}
@オーバーライド
public boolean accept(file pathname){
//ファイル拡張子をフィルターします
if(pathname.getname()。touppercase()
.endswith(extname.touppercase()))
trueを返します。
falseを返します。
}
}
プライベートJPanel ContentSpane;
プライベートJTextfield Forwardfield;
プライベートjtextfieldテンプレットフィールド。
プライベートファイル監督;
プライベートJTableテーブル。
プライベートjtextfield extnamefield;
プライベートJspinner Startspinner;
/**
*アプリケーションを起動します。
*/
public static void main(string [] args){
eventqueue.invokelater(new runnable(){
public void run(){
試す {
renamefiles frame = new renamefiles();
frame.setVisible(true);
} catch(例外e){
e.printstacktrace();
}
}
});
}
/**
*フレームを作成します。
*/
public renamefiles(){
setSresizable(false);
Settitle( "ファイルバッチの名前変更");
setDefaultCloseoperation(jframe.exit_on_close);
セットバウンド(100、100、383、409);
contentSpane = new JPanel();
contentSpane.setborder(新しいemptyborder(5、5、5、5));
setContentPane(contentSpane);
gridbaglayout gbl_contentpane = new gridbaglayout();
gbl_contentpane.columnwidths = new int [] {72、54、60、87、91、0};
gbl_contentpane.rowheights = new int [] {25、25、10、25、24、25、2、
216、0};
gbl_contentpane.columnweights = new double [] {0.0、0.0、0.0、0.0、0.0、
double.min_value};
gbl_contentpane.rowweights = new double [] {0.0、0.0、0.0、0.0、0.0、
0.0、0.0、0.0、double.min_value};
contentSpane.setLayout(gbl_contentpane);
jlabel label = new Jlabel();
label.settext( "ファイルバッチ変更モジュール:");
gridbagconstraints gbc_label = new gridbagconstraints();
gbc_label.fill = gridbagconstraints.vertical;
gbc_label.insets = new Insets(0、0、5、5);
gbc_label.gridwidth = 3;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
contentSpane.add(label、gbc_label);
jlabel label_1 = new Jlabel();
label_1.settext( "ファイルパス:");
gridbagconstraints gbc_label_1 = new gridbagconstraints();
gbc_label_1.anchor = gridbagconstraints.east;
gbc_label_1.fill = gridbagconstraints.vertical;
gbc_label_1.insets = new Insets(0、0、5、5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
ContentSpane.Add(label_1、gbc_label_1);
forderfield = new jtextfield();
forderfield.settext( "");
gridbagconstraints gbc_forderfield = new gridbagconstraints();
gbc_forderfield.fill = gridbagconstraints.horizontal;
gbc_forderfield.insets = new Insets(0、0、5、5);
gbc_forderfield.gridwidth = 3;
gbc_forderfield.gridx = 1;
gbc_forderfield.gridy = 1;
contentSpane.add(Forderfield、gbc_forderfield);
jbutton button = new jbutton();
button.addActionListener(new ActionListener(){
public void actionperformed(ActionEvent e){
do_button_actionperformed(e);
}
});
button.settext( "Browse");
gridbagconstraints gbc_button = new gridbagconstraints();
gbc_button.anchor = gridbagconstraints.northwest;
gbc_button.insets = new Insets(0、0、5、0);
gbc_button.gridx = 4;
gbc_button.gridy = 1;
contentSpane.add(button、gbc_button);
JSEPARATOR Separator_1 = new JSeparator();
gridbagconstraints gbc_separator_1 = new gridbagconstraints();
gbc_separator_1.fill = gridbagconstraints.both;
gbc_separator_1.insets = new Insets(0、0、5、0);
gbc_separator_1.gridwidth = 5;
gbc_separator_1.gridx = 0;
gbc_separator_1.gridy = 2;
contentSpane.add(separator_1、gbc_separator_1);
jlabel label_5 = new Jlabel();
label_5.settext( "#を使用して数値数で占有されている位置を指定し、 *を使用して元のファイル名を挿入します:");
gridbagconstraints gbc_label_5 = new gridbagconstraints();
gbc_label_5.fill = gridbagconstraints.vertical;
gbc_label_5.insets = new Insets(0、0、5、0);
gbc_label_5.gridwidth = 5;
gbc_label_5.gridx = 0;
gbc_label_5.gridy = 3;
ContentSpane.Add(label_5、gbc_label_5);
jlabel label_3 = new Jlabel();
label_3.settext( "template:");
gridbagconstraints gbc_label_3 = new gridbagconstraints();
gbc_label_3.anchor = gridbagconstraints.east;
gbc_label_3.fill = gridbagconstraints.vertical;
gbc_label_3.insets = new Insets(0、0、5、5);
gbc_label_3.gridx = 0;
gbc_label_3.gridy = 4;
contentSpane.Add(label_3、gbc_label_3);
templetfield = new jtextfield();
templetfield.settext( "catrestaurant ###");
gridbagconstraints gbc_templetfield = new gridbagconstraints();
gbc_templetfield.anchor = gridbagconstraints.south;
gbc_templetfield.fill = gridbagconstraints.horizontal;
gbc_templetfield.insets = new Insets(0、0、5、5);
gbc_templetfield.gridwidth = 3;
gbc_templetfield.gridx = 1;
gbc_templetfield.gridy = 4;
contentSpane.add(templetfield、gbc_templetfield);
jlabel label_4 = new Jlabel();
label_4.settext( "starts:");
gridbagconstraints gbc_label_4 = new gridbagconstraints();
gbc_label_4.fill = gridbagconstraints.vertical;
gbc_label_4.insets = new Insets(0、0、5、5);
gbc_label_4.gridx = 0;
gbc_label_4.gridy = 5;
contentSpane.Add(label_4、gbc_label_4);
startspinner = new jspinner();
gridbagconstraints gbc_startspinner = new gridbagconstraints();
gbc_startspinner.fill = gridbagconstraints.horizontal;
gbc_startspinner.insets = new Insets(0、0、5、5);
gbc_startspinner.gridx = 1;
gbc_startspinner.gridy = 5;
contentSpane.add(startspinner、gbc_startspinner);
jlabel label_2 = new Jlabel();
label_2.settext( "endix:");
gridbagconstraints gbc_label_2 = new gridbagconstraints();
gbc_label_2.fill = gridbagconstraints.horizontal;
gbc_label_2.insets = new Insets(0、0、5、5);
gbc_label_2.gridx = 2;
gbc_label_2.gridy = 5;
contentSpane.add(label_2、gbc_label_2);
jbutton startbutton = new jbutton();
startbutton.addActionListener(new ActionListener(){
public void actionperformed(ActionEvent e){
do_startbutton_actionperformed(e);
}
});
extnamefield = new jtextfield();
extnamefield.settext( "jpg");
gridbagconstraints gbc_extnamefield = new gridbagconstraints();
gbc_extnamefield.fill = gridbagconstraints.horizontal;
gbc_extnamefield.insets = new Insets(0、0、5、5);
gbc_extnamefield.gridx = 3;
gbc_extnamefield.gridy = 5;
contentSpane.add(extnamefield、gbc_extnamefield);
startbutton.settext( "start");
gridbagconstraints gbc_startbutton = new gridbagconstraints();
gbc_startbutton.anchor = gridbagconstraints.north;
gbc_startbutton.insets = new Insets(0、0、5、0);
gbc_startbutton.gridx = 4;
gbc_startbutton.gridy = 5;
contentSpane.add(startbutton、gbc_startbutton);
JSEPARATOR Separator_2 = new JSeparator();
gridbagconstraints gbc_separator_2 = new gridbagconstraints();
gbc_separator_2.anchor = gridbagconstraints.north;
gbc_separator_2.fill = gridbagconstraints.horizontal;
gbc_separator_2.insets = new Insets(0、0、5、0);
gbc_separator_2.gridwidth = 5;
gbc_separator_2.gridx = 0;
gbc_separator_2.gridy = 6;
contentSpane.add(separator_2、gbc_separator_2);
jscrollpane scrollpane = new jscrollpane();
gridbagconstraints gbc_scrollpane = new gridbagconstraints();
gbc_scrollpane.fill = gridbagconstraints.both;
gbc_scrollpane.gridwidth = 5;
gbc_scrollpane.gridx = 0;
gbc_scrollpane.gridy = 7;
contentSpane.add(scrollpane、gbc_scrollpane);
表= new Jtable();
table.setModel(new defaultTableModel(new Object [] [] {}、new String [] {
「古いファイル名」、「新しいファイル名」}));
scrollpane.setviewportview(表);
}
/**
*ブラウジングボタンのイベントを処理する方法
*
* @param e
*/
保護されたvoid do_button_actionperformed(actionevent e){
jfilechooser chooser = new jfilechooser(); //ファイルセレクターを作成します
//フォルダーの選択のみを設定します
chooser.setfileselectionMode(jfilechooser.directories_only);
int option = chooser.showopendialog(this); // [開く]ダイアログボックスを表示します
if(option == jfilechooser.approve_option){
dir = chooser.getSelectedFile(); //選択したフォルダーを取得します
} それ以外 {
dir = null;
}
forderfield.settext(dir + ""); //フォルダー情報を表示します
}
/**
*開始ボタンイベント処理方法
*
* @param e
*/
保護されたvoid do_startbutton_actionperformed(actionevent e){
string templet = templetfield.getText(); //テンプレート文字列を取得します
if(templet.isempty()){
joptionpane.showmessageialog(これ、「テンプレートの変更を確認してください」、「情報ダイアログ」、
joptionpane.warning_message);
戻る;
}
//テーブルデータモデルを取得します
DefaultTableModel Model =(defaultTableModel)table.getModel();
model.setRowCount(0); //テーブルデータをクリアします
int bi =(integer)startspinner.getValue(); //開始番号を取得します
int index = templet.indexof( "#"); //最初の "#"のインデックスを取得します
文字列code = templet.substring(index); //テンプレートで番号プレースホルダー文字列を取得します
//テンプレート内の番号プレースホルダー文字列を指定された形式に置き換えます
templet = templet.replace(code、 "%0" + code.length() + "d");
string extname = extnamefield.getText()。tolowercase();
if(extname.indexof( "。")== -1)
extname = "。"
//ファイル内のファイルリスト配列を取得します
file [] files = dir.listfiles(new extnamefilefilter(extname));
for(ファイル:ファイル){//変数ファイルの配列
//各ファイル名をフォーマットします
string name = string.format(templet、bi ++)+extname;
//ファイルの古い名前と新しい名前をテーブルのデータモデルに追加する
model.addrow(new String [] {file.getName()、name});
file parentfile = file.getParentFile(); //ファイルが配置されている場所でフォルダーオブジェクトを取得します
ファイルnewFile = new File(ParentFile、name);
file.renameto(newfile); //ファイルの名前
}
}
}
効果は写真に示されています: