java批量移动文件_java入门136: 快速批量移动文件(示例源码)

这是一个Java GUI应用程序,用于批量移动文件。用户可以选择源文件和目标文件夹,程序将移动选定的文件并显示在表格中。核心代码使用了JFileChooser对话框选择文件和目录,以及File对象进行文件移动操作。
摘要由CSDN通过智能技术生成

【实例简介】

【实例截图】

7fb96532dcaf0e639adef3293063adb0.png

【核心代码】

import java.awt.BorderLayout;

import java.awt.EventQueue;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.File;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.border.EmptyBorder;

import javax.swing.table.DefaultTableModel;

public class FileMoveTool extends JFrame {

/**

*

*/

private static final long serialVersionUID = 2023679170797741858L;

private JPanel contentPane;

private JTextField sourceTextField;

private JTextField targetTextField;

private File[] selectFiles;

private File targetDirectory;

private JTable table;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

FileMoveTool frame = new FileMoveTool();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*/

public FileMoveTool() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

contentPane.setLayout(new BorderLayout(0, 0));

setContentPane(contentPane);

JPanel panel = new JPanel();

contentPane.add(panel, BorderLayout.NORTH);

panel.setLayout(new GridLayout(2, 1, 5, 5));

JPanel sourcePanel = new JPanel();

panel.add(sourcePanel);

JLabel sourceLabel = new JLabel("选择源文件:");

sourcePanel.add(sourceLabel);

sourceTextField = new JTextField();

sourcePanel.add(sourceTextField);

sourceTextField.setColumns(17);

JButton sourceButton = new JButton("选择文件");

sourceButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

do_sourceButton_actionPerformed(e);

}

});

sourcePanel.add(sourceButton);

JPanel targetPanel = new JPanel();

panel.add(targetPanel);

JLabel targetLabel = new JLabel("选择目标文件夹:");

targetPanel.add(targetLabel);

targetTextField = new JTextField();

targetPanel.add(targetTextField);

targetTextField.setColumns(14);

JButton targetButton = new JButton("选择文件夹");

targetButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

do_targetButton_actionPerformed(e);

}

});

targetPanel.add(targetButton);

JPanel buttonPanel = new JPanel();

contentPane.add(buttonPanel, BorderLayout.SOUTH);

JButton moveButton = new JButton("移动");

moveButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

do_moveButton_actionPerformed(e);

}

});

buttonPanel.add(moveButton);

JButton closeButton = new JButton("关闭");

closeButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

do_closeButton_actionPerformed(e);

}

});

buttonPanel.add(closeButton);

JScrollPane scrollPane = new JScrollPane();

contentPane.add(scrollPane, BorderLayout.CENTER);

table = new JTable();

DefaultTableModel model = (DefaultTableModel) table.getModel();// 获得表格模型

model.setColumnIdentifiers(new String[] { "移动文件名称", "目标文件夹" });

table.setModel(model);

scrollPane.setViewportView(table);

}

protected void do_sourceButton_actionPerformed(ActionEvent e) {

DefaultTableModel model = (DefaultTableModel) table.getModel();// 获得表格模型

if (model.getRowCount() != 0) {

model.setRowCount(0);

}

table.setModel(model);

JFileChooser chooser = new JFileChooser();

chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

chooser.setMultiSelectionEnabled(true);

int result = chooser.showOpenDialog(this);

if (result == JFileChooser.APPROVE_OPTION) {

selectFiles = chooser.getSelectedFiles();

if (selectFiles.length != 0) {

StringBuilder fileNames = new StringBuilder();

for (File selectFile : selectFiles) {

fileNames.append(selectFile.getName() "、");

}

fileNames.deleteCharAt(fileNames.length() - 1);

sourceTextField.setText(fileNames.toString());

}

}

}

protected void do_targetButton_actionPerformed(ActionEvent e) {

JFileChooser chooser = new JFileChooser();

chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

chooser.setMultiSelectionEnabled(false);

int result = chooser.showOpenDialog(this);

if (result == JFileChooser.APPROVE_OPTION) {

targetDirectory = chooser.getSelectedFile();

targetTextField.setText(targetDirectory.getAbsolutePath());

}

}

protected void do_moveButton_actionPerformed(ActionEvent e) {

if ((selectFiles == null) || (selectFiles.length == 0)) {

JOptionPane.showMessageDialog(this, "请选择需要移动的文件!", "警告信息", JOptionPane.WARNING_MESSAGE);

return;

}

if (targetDirectory == null) {

JOptionPane.showMessageDialog(this, "请选择目标文件夹!", "警告信息", JOptionPane.WARNING_MESSAGE);

return;

}

DefaultTableModel model = (DefaultTableModel) table.getModel();// 获得表格模型

for (File selectFile : selectFiles) {

String fileName = targetDirectory.getAbsolutePath() File.separator selectFile.getName();// 获得新文件名

selectFile.renameTo(new File(fileName));// 移动文件

model.addRow(new String[] { selectFile.getName(), targetDirectory.getAbsolutePath() });// 向表格模型中增加数据

}

table.setModel(model);// 设置表格模型

}

protected void do_closeButton_actionPerformed(ActionEvent e) {

System.exit(0);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值