/*我想实现的功能例如将原本D:\test中所有文件,
* 统一命名成类似图片1.jpg,图片2.jpg。。
* 让用户输入想要自动命名的文件夹路径和文件统一命的名称(如图片),
* 然后再让用户输入想要自动命名的文件类型(jgp等)*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class jfr extends JFrame {
String getpath;
String gettype;
String getname;
JTextField jf1 = new JTextField();// 接收用户输入的文件夹路径
JTextField jf2 = new JTextField();// 接收用户输入的文件夹下的文件类型
JTextField jf3 = new JTextField();// 接收用户输入的文件夹下的文件统一的名称
ImageIcon bu = new ImageIcon("button.gif");// 这个图片我放在了目录下,由于是提问我发送不成图片
JButton sure, cancel;
public jfr() {
Container cp;
cp = getContentPane();
setSize(400, 400);
setLocation(640, 400);
setTitle("文件自动批量命名工具");
setBackground(Color.blue);
setLayout(new GridLayout(4, 2));
setVisible(true);
cp.add(new JLabel("请输入您要批量命名的文件\n所在文件夹路径"));
cp.add(jf1);
cp.add(new JLabel("请输入您要批量命名的文件\n的文件类型,如\"txt\",\"doc\"等"));
cp.add(jf2);
cp.add(new JLabel("请输入您要批量处理的文件\n前缀名:"));
cp.add(jf3);
sure = new JButton("确定", bu);
cancel = new JButton("取消", bu);
cp.add(sure);
cp.add(cancel);
jf1.addActionListener(new actionlisten1());
jf2.addActionListener(new actionlisten1());
sure.setActionCommand("正在批量命名中,请稍后!");
sure.addActionListener(new bu1());
cancel.addActionListener(new bu2());
addWindowListener(new windowlisten());
}// 以下用来实现监听三个文本框的输入,由于字数限制,只写一个
class actionlisten1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
getpath = jf1.getText();
}
}// 监听按钮确定
class bu1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println(sure.getActionCommand());
exchange ex = new exchange(gettype, gettype, getname);
boolean an = ex.exchangefiles();
if (an)
System.out.println("文件批量命名完毕,请查阅!");
}// 监听取消按钮
}
class bu2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("已经取消");
}
}
class windowlisten extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}// 这个类我没有定义成类中类,用来实现文件的重命名
class exchange {
String getpath;
String gettype;
String getname;
public exchange(String getp, String gett, String getn) {
getpath = getp;
gettype = gett;
getname = getn;
}// 这个方法用来实现改变文件的名称
public boolean exchangefiles() {
getpath = exchangestring(getpath);
File f1 = new File(getpath);
String files[] = f1.list();
for (int i = 0; i <= files.length; i++) {
File f2 = new File(getpath + files[i]);
File f3 = new File(getpath + "\\" + getname + i + "." + gettype);
f3.renameTo(f2);
}
return true;
}// 此方法用来转换用户输入的文件夹路径中'\',将其转换为'\\'
public String exchangestring(String s) {
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '\\') {
// 目前我遇到的问题就是这样,无法将路径中的'\'换成'\\'
s = s.substring(0, i) + "\\\\" + s.substring(i);
System.out.println("test!");
}
}
return s;
}
}
}
public class test {
public static void main(String[] args) {
jfr jf = new jfr();
}
}
//自己好好看看。这东西错误好多阿。
//什么错误都有。我就给你改了。另外test是另一个 .java文件中写的。自己看看
//还有就是我只是把你的程序改的不报错误了!
一把无情的刀插入了我的心脏.....心好痛啊!头一次见有人这么写代码还带注释的,更那个啥的是,竟然还有理由!BS你!
目前我遇到的问题就是这样,无法将路径中的'\'换成'\\',应该是要转义,用4个\能代替一个\。你提问的方式不对,要一次提一个问题,这样人家才好回答。
public String exchangestring(String s)
{for(int i=0;i
{s=s.substring(0,i)+"\\\\"+s.substring(i+1);
i=i+1;
System.out.println("test!");
}}
return s;}}
s.substring(i)改为s.substring(i+1)
后面再加一句i=i+1;因为换了之后,长度变长了,如果这里不加的话会死循环
要求太高,分太低,估计没高手给你解释,新手友情提醒 这个问题不菜鸟啊,要写出这么一个东西,得死很多脑细胞的,分数太低了 我也不太清楚,可以