周日啊,终于雨见停了。。。
package Test;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.*;
//目录和文件的创建、删除和更名
public class Demo_FileUse extends JFrame{
JTextField jtfPath;
public Demo_FileUse() {
super("目录和文件的创建、删除和更名"); //调用父类构造函数
jtfPath = new JTextField(18); //实例化文件路径输入框
JButton jbFile = new JButton("选择"); //实例化文件选择按钮
JPanel panel = new JPanel(); //实例化面板,用于容纳输入框和按钮
panel.add(new JLabel("文件名:")); //增加组件到面板
panel.add(jtfPath);
panel.add(jbFile);
JPanel panel2 = new JPanel();
//实例化按钮,并增加到面板2上
panel2.add(new JButton(new CreateFileAction()));
panel2.add(new JButton(new RenameFileAction()));
panel2.add(new JButton(new DeleteFileAction()));
//选择文件按钮事件处理
jbFile.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
//实例化文件选择器
JFileChooser fileChooser = new JFileChooser();
//设置文件选择模式,此处为文件和目录均可
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
//弹出文件选择器,并判断是否点击了打开按钮
if(fileChooser.showOpenDialog(Demo_FileUse.this) == JFileChooser.APPROVE_OPTION) {
//得到选择文件或目录的绝对路径
String fileName = fileChooser.getSelectedFile().getAbsolutePath();
jtfPath.setText(fileName);
}
}
});
//得到容器
Container container = getContentPane();
//增加组件到容器
container.add(panel, BorderLayout.NORTH);
container.add(panel2, BorderLayout.CENTER);
setSize(500, 400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
//创建新文件
class CreateFileAction extends AbstractAction{
public CreateFileAction() {
super("创建文件");
}
@Override
public void actionPerformed(ActionEvent e) {
//从输入框得到文件名
String filename = jtfPath.getText();
//实例化一个文件
File sfile = new File(filename);
try {
//如果文件不存在
if(!sfile.exists()) {
//创建文件成功
if(sfile.createNewFile() == true) {
showMessage(filename+" 新文件创建成功.");
} else {
showMessage(filename+" 新文件创建失败.");
}
} else {
showMessage(filename+" 原文件已存在.");
}
}catch (Exception ex) {
//打印错误信息
ex.printStackTrace();
}
}
}
//重命名文件
class RenameFileAction extends AbstractAction{
public RenameFileAction() {
super("重命名文件");
}
@Override
public void actionPerformed(ActionEvent e) {
//输入新文件名对话框
String filename = JOptionPane.showInputDialog("输入新文件名");
//源文件
File sfile = new File(jtfPath.getText());
//新文件
File f = new File(filename);
//重命名
sfile.renameTo(f);
showMessage(sfile.getName()+" 重命名成功.");
//更新输入框的文件名
jtfPath.setText(f.getAbsolutePath());
}
}
//删除文件
class DeleteFileAction extends AbstractAction{
public DeleteFileAction() {
super("删除");
}
@Override
public void actionPerformed(ActionEvent e) {
//源文件
File sfile = new File(jtfPath.getText());
try {
//删除文件
sfile.delete();
showMessage(sfile.getName()+" 删除成功.");
}catch(Exception ex) {
showMessage(sfile.getName()+" 删除失败.");
ex.printStackTrace();
}
}
}
private void showMessage(String message) {
//显示信息
JOptionPane.showMessageDialog(Demo_FileUse.this, message);
}
public static void main(String[] args) {
new Demo_FileUse();
}
}
执行后可以实现创建、更名和删除的功能
代码里还是有点问题的,在进行重命名和删除的时候,应该是要在创建文件的路径上进行的操作,这样才是正确的。感兴趣的话可以自己加点日志debug下。