批量复制文件到指定目录并执行.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();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值