package huzhidong;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.Date;
import javax.swing.*;
////////////主函数/////////
public class FileCut {
public static void main(String args[]) {
FileCutFrame fcf = new FileCutFrame();
fcf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fcf.pack();
fcf.setVisible(true);
fcf.setLocation(300, 300);
}
}
////////文件分割器顶层容器类//
class FileCutFrame extends JFrame {
public FileCutFrame() {
setTitle("文件分割器");
Container contentPane = getContentPane();
FileCutPanel panel = new FileCutPanel();
contentPane.add(panel);
}
}
////////计算器界面类//////
class FileCutPanel extends JPanel {
int number;//用于记录输入的数目
JButton cut;//分割按钮
JButton union;//合并按钮
JButton ensure;//确认按钮
JButton cancel;//取消按钮
JButton lengthF;//大小按钮
JButton numberF;//数目按钮
JButton open;//浏览按钮1
JButton saveTo;//浏览按钮2
JButton addTFs;//添加按钮
JTextArea helpText;//左边文本框
JLabel label1;//原文件标签
JLabel label2;//分割方式标签
JLabel label3;//保存到标签
JTextField source;//原文件文本框
JScrollPane helpTJs;//左边文本框的顶层容器
JTextField numIn;//数字输入框
JTextField saveAs;//保存地址输入框
JPanel jp1;
JPanel jp2;
JPanel jp3;
JPanel jp4;
JPanel jp5;
JPanel jp6;
JPanel jp7;
JPanel jp8;
static String flag1;//记录操作形式
static String flag2;//记录分割形式
int fileN = 0;//文件数组中文件个数
File sourceFile;//原文件或文件夹
JComboBox count;//单位选择
String[] strOF;//记录要合并的文件名
File[] unionFiles;//要合并的文件组
final JProgressBar aJProgressBar;
/////构造方法/////
public FileCutPanel() {
ActionListener textAction2 = new TextAction2();
ActionListener textAction1 = new TextAction1();
ActionListener buttonAction1 = new ButtonAction1();
setLayout(new BorderLayout());
cut = new JButton("分割");
cut.addActionListener(buttonAction1);
union = new JButton("合并");
union.addActionListener(buttonAction1);
ensure = new JButton("确认");
ensure.addActionListener(new QuerenButtonAction());
cancel = new JButton("取消");
cancel.addActionListener(buttonAction1);
helpText = new JTextArea();
helpText.setEditable(false);
helpTJs = new JScrollPane(helpText);
count = new JComboBox();
count.insertItemAt("Mb", 0);
count.insertItemAt("Kb", 1);
count.insertItemAt("b", 2);
count.setSelectedIndex(0);
count.setEnabled(false);
label1 = new JLabel("原文件");
label2 = new JLabel("分割方式");
label3 = new JLabel("保存到");
source = new JTextField(11);
source.addActionListener(textAction1);
source.setEnabled(false);
source.setToolTipText("输入文件路径后按回车可显示文件信息");
numIn = new JTextField(4);
numIn.addActionListener(textAction2);
numIn.setEnabled(false);
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jp4 = new JPanel();
jp5 = new JPanel();
jp6 = new JPanel();
jp7 = new JPanel();
jp8 = new JPanel();
jp6.setLayout(new BorderLayout());
jp7.setLayout(new BorderLayout());
lengthF = new JButton("大小");
lengthF.addActionListener(buttonAction1);
lengthF.setToolTipText("此为分割后文件大小");
lengthF.setEnabled(false);
numberF = new JButton("数目");
numberF.addActionListener(buttonAction1);
numberF.setToolTipText("此为分割后文件数目");
numberF.setEnabled(false);
saveAs = new JTextField(16);
saveAs.setEnabled(false);
addTFs = new JButton("添加");
addTFs.setEnabled(false);
addTFs.setToolTipText("将文件添加到要合并的文件组中");
addTFs.addActionListener(new addTFsActionL());
open = new JButton("浏览");
open.addActionListener(new LiulanAction1Performed());
saveTo = new JButton("浏览");
saveTo.addActionListener(new LiulanAction2Performed());
jp1.setLayout(new FlowLayout(FlowLayout.LEFT));
jp1.add(cut);
jp1.add(union);
jp6.add(jp1, BorderLayout.NORTH);
jp6.add(helpTJs);
jp2.add(label1);
jp2.add(source);
jp2.add(open);
jp2.add(addTFs);
jp7.add(jp2, BorderLayout.NORTH);
helpText.setText("\n欢迎使用文件分割器\n" + "作者: 胡志栋\n" + "请选择您所要的操作\n\n"
+ "选择上面的按钮");
aJProgressBar = new JProgressBar();
aJProgressBar.setMaximum(0);
JPanel jp41 = new JPanel();
JPanel jp42 = new JPanel();
JPanel jp43 = new JPanel();
jp41.add(label2);
jp41.add(lengthF);
jp41.add(numberF);
jp41.add(numIn);
jp41.add(count);
jp42.add(label3);
jp42.add(saveAs);
jp42.add(saveTo);
jp43.add(ensure);
jp43.add(cancel);
jp4.setLayout(new GridLayout(4, 1));
jp4.add(jp41);
jp4.add(jp42);
jp4.add(jp43);
jp4.add(aJProgressBar);
jp7.add(jp4, BorderLayout.SOUTH);
add(jp6, BorderLayout.WEST);
add(jp7, BorderLayout.EAST);
strOF = new String[20];
}
////////分割,合并,大小,数目,取消按钮事件类
class ButtonAction1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
fileN = 0;
source.setEnabled(true);
saveAs.setEnabled(true);
////当为分割时///
if (e.getActionCommand() == "分割") {
count.setEnabled(false);
label2.setText("分割方式");
flag1 = "分割";
cut.setForeground(new Color(255, 0, 0));
union.setForeground(new Color(0, 0, 0));
lengthF.setEnabled(true);
numberF.setEnabled(true);
addTFs.setEnabled(false);
label1.setText("原文件");
//////////显示帮助信息///
helpText
.setText("分割使用方法:\n原文件输入要分割的文件,\n然后选择分割方式,保\n存处输入分割后的文件\n存放地址,点击确认即可");
}
////当为合并时///
if (e.getActionCommand() == "合并") {
addTFs.setEnabled(true);
count.setEnabled(false);
numIn.setEnabled(false);
flag1 = "合并";
union.setForeground(new Color(255, 0, 0));
cut.setForeground(new Color(0, 0, 0));
label1.setText("原文件");
label2.setText(" ");
lengthF.setEnabled(false);
numberF.setEnabled(false);
//////显示帮助信息////////
helpText
.setText("合并使用方法:\n原文件输入要合并的文件\n或它们所在文件夹,保存\n处输入的为合并后的文件,\n若该文件已经存在,则\n将该文件与原文件合并.");
}
///当为大小或数目按钮时//
if (e.getActionCommand() == "大小" || (e.getActionCommand() == "数目")) {
String str = source.getText();
str = str.replace("\\", "/");//将文件名中"\"换为"/"
File aimFile = new File(str);
if (aimFile.exists()) {/////当原文件存在时显示其信息
if (aimFile.isDirectory()) {//当为文件夹时
helpText.setText("警告!!!\n该目标是一个文件夹\n文件夹名称:\n"
+ aimFile.getName() + "\n文件数目:"
+ aimFile.listFiles().length + "\n"
+ new Date(aimFile.lastModified()));
}
if (aimFile.isFile()) {//当为文件时
helpText.setText("文件夹名称:\n" + aimFile.getName()
+ "\n大小:" + aimFile.length() + "byte\n"
+ new Date(aimFile.lastModified()));
}
} else {
helpText.setText("\n\n对不起,找不到原文件!\n");
}
numIn.setEnabled(true);
if (e.getActionCommand() == "大小") {
lengthF.setForeground(new Color(255, 0, 0));
numberF.setForeground(new Color(0, 0, 0));
count.setEnabled(true);
flag2 = "lengthF";
} else {
count.setEnabled(false);
numberF.setForeground(new Color(255, 0, 0));
lengthF.setForeground(new Color(0, 0, 0));
flag2 = "numberF";
}
}
////////当为取消按钮时///
if (e.getActionCommand() == "取消") {
numIn.setText("");
source.setText("");
saveAs.setText("");
strOF = null;
fileN = 0;
}
}
}
///////原文件文本框事件类////
class TextAction1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String str = source.getText();
str = str.replace("\\", "/");
File aimFile = new File(str);
i