批量复制文件到指定目录并执行.bat文件(2012.06.06)

代码如下:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.cn.text;

/**
*
* @author tec_feng
*/
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;


import javax.swing.*;

import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class FileOperate {

private JFrame frame;
private Container contentPane;
private JPanel jPanel;
private JTable table, table1;
private JButton jb1, jb2, jb3, jb4, jb5;
private JFileChooser chooser;
private static DefaultTableModel tableModel, tableModel1;

public FileOperate() {
frame = new JFrame("FileOperate");
frame.setSize(713, 300);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initGUI();
}

public void initGUI() {
contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
jPanel = new JPanel(new FlowLayout());

Object row[][] = new Object[0][2];
String[] tableHeadName = {"复制文件", "指定目录"}; //表头
table = createTable(tableHeadName, row, tableModel);
table.getColumnModel().getColumn(0).setMaxWidth(250);
table.getColumnModel().getColumn(1).setMaxWidth(250);
JScrollPane scrollPane = new JScrollPane(table);

Object row1[][] = new Object[0][1];
String[] tableHeadName1 = {"需执行的.bat文件"}; //表头
table1 = createTable(tableHeadName1, row1, tableModel1);

table1.getColumnModel().getColumn(0).setMaxWidth(250);
JScrollPane scrollPane1 = new JScrollPane(table1);

chooser = new JFileChooser();
//设置宽度
TableColumn firsetColumn = table.getColumnModel().getColumn(0);
jb1 = new JButton("添加文件");
jb1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
addLister((DefaultTableModel) table.getModel());
}
});
table.addMouseListener(getMouseListener());

jb2 = new JButton("移除文件");
jb2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
if (-1 != table.getSelectedRow()) {
((DefaultTableModel) table.getModel()).removeRow(table.getSelectedRow());
}
if (-1 != table1.getSelectedRow()) {
((DefaultTableModel) table1.getModel()).removeRow(table1.getSelectedRow());
}
}
});
jb3 = new JButton("执行复制");
jb3.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
FileInputStream inStream = null;
FileOutputStream fs = null;
try {

for (int i = 0; i < table.getRowCount(); i++) {
String s1 = (String) table.getModel().getValueAt(i, 0);
String[] fileNames = s1.split("\\\\");
String newPath = s1.replaceAll("\\\\", "\\\\\\\\");
String s2 = (String) table.getModel().getValueAt(i, 1);
String oldPath = s2.replaceAll("\\\\", "\\\\\\\\");
int bytesum = 0;
int byteread = 0;
inStream = new FileInputStream(newPath); //读入原文件
fs = new FileOutputStream(oldPath + "\\" + fileNames[fileNames.length - 1]);
byte[] buffer = new byte[1444];
int length;
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
fs.write(buffer, 0, byteread);
}

}
JOptionPane.showMessageDialog(null, "复制完成");
inStream.close();
fs.close();

} catch (Exception es) {
JOptionPane.showMessageDialog(null, "缺少目录或复制文件出错");
es.printStackTrace();

}

}
});
jb4 = new JButton("执行.bat文件");
jb4.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < table1.getRowCount(); i++) {
String s1 = (String) table1.getModel().getValueAt(i, 0);
String newPath = s1.replaceAll("\\\\", "\\\\\\\\");
String cmd = "cmd /c start " + newPath;
try {
Process ps = Runtime.getRuntime().exec(newPath);
} catch (Exception ioe) {
ioe.printStackTrace();
}
}
}
});
jb5 = new JButton("添加.bat文件");
jb5.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
addLister((DefaultTableModel) table1.getModel());
}
});
jPanel.add(jb1);
jPanel.add(jb5);
jPanel.add(jb2);
jPanel.add(jb3);
jPanel.add(jb4);

contentPane.add(scrollPane, BorderLayout.WEST);
contentPane.add(scrollPane1, BorderLayout.CENTER);
contentPane.add(jPanel, BorderLayout.SOUTH);

}

public void go() {
frame.setVisible(true);
}

public void addLister(DefaultTableModel defaultTableModel) {
int result;
chooser.setMultiSelectionEnabled(true);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
result = chooser.showOpenDialog(null);
if (null != chooser.getSelectedFile() && result == JFileChooser.APPROVE_OPTION) {
File[] files = chooser.getSelectedFiles();
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
defaultTableModel.addRow(new String[]{files[i].getAbsolutePath(), null});
}
}
// 更新表格
table.invalidate();

}
//创建表

public JTable createTable(String[] tableHeadName, Object[][] rowAndCol, DefaultTableModel tableModel) {
tableModel = new DefaultTableModel() {
//设置表不可编辑

@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
tableModel.setDataVector(rowAndCol, tableHeadName);
return new JTable(tableModel);
}
//监听鼠标事件

public MouseListener getMouseListener() {
return new MouseListener() {

int status = 0;
int row;
int colunm;

@Override
public void mouseClicked(MouseEvent e) {
}

@Override
public void mousePressed(MouseEvent e) {
int result;
if (e.getClickCount() == 2) {
chooser.setMultiSelectionEnabled(true);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
result = chooser.showOpenDialog(null);
row = table.rowAtPoint(e.getPoint());
colunm = table.columnAtPoint(e.getPoint());
if (null != chooser.getSelectedFile() && result == JFileChooser.APPROVE_OPTION) {
table.getModel().setValueAt(chooser.getSelectedFile().getAbsolutePath().toString(), row, colunm);
//刷新table
table.updateUI();
}
}
}

@Override
public void mouseReleased(MouseEvent e) {
}

@Override
public void mouseEntered(MouseEvent e) {
}

@Override
public void mouseExited(MouseEvent e) {
}
};
}

public static void main(String args[]) {
new FileOperate().go();
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值