批量复制文件到指定目录并执行.bat文件(2012.06.06)
2012-06-06 16:58
851 查看
代码如下:
/*
* 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();
}
}
/*
* 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();
}
}
相关文章推荐
- 小黑的日常折腾-复制外部命令的可执行文件和依赖库文件到指定目录下的对应目录
- 单文件复制到指定目录和自动运行多个.bat文件实现(2012.06.05)
- bat 复制文件到指定目录
- 怎么用批处理*.bat 执行文件目录下面的SQL语句脚本(批量的)。。。@echo off是什么意思?
- java在指定目录下执行dos命令或者bat文件
- bat 将当前目录的文件复制到指定目录
- shell 获取不同目录下指定文件,并把文件复制到一个文件夹下面
- 批处理:查找指定条件的文件复制到指定的目录中
- java复制文件到指定目录
- android 获取指定路径下所有文件,将文件从一个目录copy到另一个目录,执行linux命令
- IO流_复制指定目录下指定后缀名的文件并修改名称案例
- 目录下指定类型的文件复制到另外一个目录
- 将指定文件夹下文件及子文件夹下的文件复制到同一级目录
- bat 复制前一天匹配的文件到指定文件夹
- 不能执行临时目录中的文件。安装中断。错误5:系统找不到指定文件 被解决
- 十七周四次课 2018.03.05 expect脚本同步文件、expect脚本指定host和要同步的文件、构建文件分发系统、批量远程执行命令
- VBA遍历当前目录下指定类型的excel文件并复制文件内指定的内容到新表中
- python执行某一目录下所有.py结尾的文件,并将执行结果保存到log.txt文档。一般用于批量执行测试。
- linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
- linux命令复制指定文件或者指定目录下的全部文件到另一个目录中