📄 2006110218220812234.txt
字号:
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);
if (aimFile.exists()) {
if (aimFile.isDirectory()) {//当为文件夹时
File[] aimFiles = aimFile.listFiles();
String[] strFiles = new String[aimFile.listFiles().length];
for (int i = 0; i < aimFile.listFiles().length; i++)
strFiles[i] = aimFiles[i].getName();
helpText.setText("文件夹名称:" + aimFile.getName() + "\n子文件:\n");
for (int i = 0; i < aimFile.listFiles().length; i++)
helpText.append(strFiles[i] + "\n");
addTFs.setEnabled(false);
}
if (aimFile.isFile()) {//当为文件时
helpText.setText("该目标是一个文件\n文件夹名称:\n" + aimFile.getName()
+ "\n文件大小:" + aimFile.length() + "Bytes\n"
+ new Date(aimFile.lastModified()));
addTFs.setEnabled(false);
}
} else {
helpText.setText("\n\n 找不到该文件!!\n");
}
}
}
//////数字输入框事件类////////
class TextAction2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (flag2 == "numberF") {
try {
number = Integer.parseInt(numIn.getText());
ensure.setEnabled(true);
cancel.setEnabled(true);
} catch (Exception e1) {
helpText.setText("\n\n 输入错误!");
}
} else if (Double.parseDouble(numIn.getText()) > 0)
;
{
ensure.setEnabled(true);
cancel.setEnabled(true);
}
if (Double.parseDouble(numIn.getText()) < 0) {
ensure.setEnabled(false);
cancel.setEnabled(true);
cancel.setToolTipText("分割块数目必须是正整数");
}
}
}
///确认按钮事件类///
class QuerenButtonAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
try{
aJProgressBar.setIndeterminate(true);
if (flag1 == "分割" && flag2 == "lengthF") {
cutFile("lengthF");
}
if (flag1 == "分割" && flag2 == "numberF") {
cutFile("numberF");
} else if (flag1 == "合并") {
unionFiles();
}
fileN = 0;
}catch(Exception e1){helpText.setText("\n\n未知错误!!");}
aJProgressBar.setIndeterminate(false);
}
/////////文件分割函数///
private void cutFile(String string) {
int fileSize = 0;
int fileNum = 0;
helpText.setText("\n分割开始...\n");
sourceFile = new File(source.getText().replace("\\", "/"));
aJProgressBar.setMaximum((int) sourceFile.length());
if (string == "lengthF") {/////按文件长度分割
if (count.getSelectedItem() == "Mb")
fileSize = (int) (Float.parseFloat(numIn.getText()) * 1024 * 1024);
if (count.getSelectedItem() == "Kb")
fileSize = (int) (Float.parseFloat(numIn.getText()) * 1024);
if (count.getSelectedItem() == "b")
fileSize = (int) (Float.parseFloat(numIn.getText()));
fileNum = (int) (sourceFile.length() / fileSize);
if (sourceFile.length() % fileSize != 0) {
fileNum++;
}
}
if (string == "numberF") {
fileNum = Integer.parseInt(numIn.getText());
fileSize = ((int) (sourceFile.length() / fileNum)) + 1;
}
File[] newFile = new File[fileNum];
try {
int count = 0;
int i = 0;
byte[] bueff = new byte[fileSize];
FileOutputStream out = null;
FileInputStream in = new FileInputStream(sourceFile);
File f = new File(saveAs.getText().replace("\\", "/"));
if (!f.exists())
f.createNewFile();
for (i = 0; i < newFile.length; i++) {
helpText.append("正在创建第" + (i + 1) + "个文件...\n");
newFile[i] = new File(saveAs.getText().replace("\\", "/"),
sourceFile.getName()+"(" + i + ")" );
}
i = 0;
while ((count = in.read(bueff, 0, fileSize)) != -1) {
helpText.append("正在写入第" + (i + 1) + "个文件...\n");
out = new FileOutputStream(newFile[i]);
out.write(bueff, 0, count);
out.close();
i++;
}
in.close();
helpText.append("\n\n\n 分割成功!!");
} catch (Exception e) {
helpText.append("\n\n\n 分割失败!!");
}
}
////////////文件合并函数///////
private void unionFiles() {
File outFile = new File(saveAs.getText());//输出流的目标文件
if (outFile.isDirectory())
outFile = new File(outFile, "union");
FileInputStream in = null;//输入流
FileOutputStream out;//输出硫
byte[] buff = new byte[1024];//用于读写,相当一个缓冲区
int count;//用于判断
helpText.setText("合并开始\n");
File yuanwenjian = new File(source.getText());
/////当原文件与保存的文件都是不是文件夹时///
if (yuanwenjian.isFile() && new File(saveAs.getText()).isFile()
&& fileN == 0) {
try {
out = new FileOutputStream(outFile, true);//创建输出硫
in = new FileInputStream(yuanwenjian);//创建输入流
while ((count = in.read(buff, 0, 1024)) != -1) {
out.write(buff, 0, count);
}
in.close();
out.close();
helpText.append("\n\n\n 合并成功!!");
} catch (Exception e) {
helpText.append("\n\n\n 合并失败!!");
}
} else {
try {
if (yuanwenjian.isDirectory())
unionFiles = yuanwenjian.listFiles();//要合并的文件夹中的文件
else {//通过添加按钮而要合并的文件
unionFiles = new File[fileN];
for (int i = 0; i < fileN; i++) {
helpText.append("正在创建第" + (i + 1) + "个文件...\n");
unionFiles[i] = new File(strOF[i]);
}
}
out = new FileOutputStream(outFile);
for (int i = 0; i < unionFiles.length; i++)//以每个文件为输入流
{
helpText.append("正在读入第" + (i + 1) + "个文件...\n");
in = new FileInputStream(unionFiles[i]);
while ((count = in.read(buff, 0, 1024)) != -1) {
out.write(buff, 0, count);
}
in.close();
}
out.close();
helpText.append("\n\n\n 合并成功!!");
} catch (Exception e) {
helpText.append("\n\n\n 合并失败!!");
}
}
}
}
////下部浏览按钮事件类,显示文件选择器///
class LiulanAction2Performed implements ActionListener {
public void actionPerformed(ActionEvent e) {
JFileChooser df = new JFileChooser();
df.setDialogTitle("共享文件或文件夹");
df.setVisible(true);
if (flag1 == "分割")
df.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (flag1 == "合并")
df.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
df.showSaveDialog(new JPanel());
String file = df.getSelectedFile().toString();
saveAs.setText(file);
}
}
////////上部浏览按钮事件类,显示文件对话框////
class LiulanAction1Performed implements ActionListener {
public void actionPerformed(ActionEvent e) {
try{
JFileChooser df = new JFileChooser("要分割或合并的文件");
if (flag1 == "分割")
df.setFileSelectionMode(JFileChooser.FILES_ONLY);
if (flag1 == "合并")
df.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
df.showSaveDialog(new JPanel());
df.setVisible(true);
source.setText(df.getSelectedFile().toString());
if (df.getSelectedFile().isDirectory()) {//当为文件夹时
File[] aimFiles = df.getSelectedFile().listFiles();
String[] strFiles = new String[df.getSelectedFile().listFiles().length];
for (int i = 0; i < df.getSelectedFile().listFiles().length; i++)
strFiles[i] = aimFiles[i].getName();
helpText.setText("文件夹名称:" + df.getSelectedFile().getName()
+ "\n子文件:\n");
for (int i = 0; i < df.getSelectedFile().listFiles().length; i++)
helpText.append(strFiles[i] + "\n");
addTFs.setEnabled(false);
}
if (df.getSelectedFile().isFile()) {//当为文件时
helpText.setText("该目标是一个文件\n文件夹名称:\n"
+ df.getSelectedFile().getName() + "\n文件大小:"
+ df.getSelectedFile().length() + "Bytes\n"
+ new Date(df.getSelectedFile().lastModified()));
addTFs.setEnabled(true);
}
}catch(Exception ex){helpText.setText("\n 找不到指定文\n件或文件夹");}
}
}
/////////添加按钮事件类///////
class addTFsActionL implements ActionListener {
public void actionPerformed(ActionEvent e) {
strOF[fileN++] = source.getText();
helpText.setText("将要合并的文件:\n");
for (int i = 0; i < fileN; i++)
helpText.append(new File(strOF[i]).getName() + "\n");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -