📄 framefilesplitter.java
字号:
int count;//用于判断
jTextAreaSouth.setText("合并开始...\n");
File yuanwenjian = new File(jTextFieldUnionSource.getText());
//当原文件与保存的文件都是不是文件夹时
if (yuanwenjian.isFile() && new File(jTextFieldUnionTarget.getText()).isFile() && Number == 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();
jTextAreaSouth.append("\n\n合并成功!!");
} catch (Exception e) {
jTextAreaSouth.append("\n\n合并失败!!");
}
} else {
try {
if (yuanwenjian.isDirectory())
unionFiles = yuanwenjian.listFiles();//要合并的文件夹中的文件
else {//通过添加按钮而要合并的文件
unionFiles = new File[Number];
for (int i = 0; i < Number; i++) {
jTextAreaSouth.append("正在创建第" + (i + 1) + "个文件...\n");
unionFiles[i] = new File(unionFileNames[i]);
}
}
out = new FileOutputStream(outFile);//创建输出文件流
for (int i = 0; i < unionFiles.length; i++) {//以每个文件为输入流进行写入
jTextAreaSouth.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();
jTextAreaSouth.append("\n\n合并成功!!");
} catch (Exception e) {
jTextAreaSouth.append("\n\n合并失败!!");
}
}
}//GEN-LAST:event_jButtonUnionActionPerformed
private void jButtonSplitterTargetBrowseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSplitterTargetBrowseActionPerformed
String filename="";
JFileChooser fc=new JFileChooser();//创建一个文件选择器
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int returnVal=fc.showOpenDialog(this);//弹出一个打开文件选择器,
//如果用户选择了一个文件,则将文件的绝对路径取出
if(returnVal==JFileChooser.APPROVE_OPTION){
filename=fc.getSelectedFile().getAbsolutePath();
}
jTextFieldSplitterTarget.setText(filename);//在保存位置文本框中显示
}//GEN-LAST:event_jButtonSplitterTargetBrowseActionPerformed
private void jButtonSplitterSourceBrowseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSplitterSourceBrowseActionPerformed
String filename="";
JFileChooser fc=new JFileChooser();//创建一个文件选择器
//fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int returnVal=fc.showOpenDialog(this);//弹出一个打开文件选择器,
//如果用户选择了一个文件,则将文件的绝对路径取出
if(returnVal==JFileChooser.APPROVE_OPTION){
filename=fc.getSelectedFile().getAbsolutePath();
}
jTextFieldSplitterSource.setText(filename);//在原始文件文本框中显示
String str = filename.replace("\\", "/");//将文件名中"\"换为"/"
File aimFile = new File(str);
if (aimFile.exists()) {/////当原文件存在时显示其信息
if (aimFile.isDirectory()) {//当为文件夹时
jTextAreaSouth.setText("警告!!!\n该目标是一个文件夹\n文件夹名称:\n"
+ aimFile.getName() + "\n文件数目:"
+ aimFile.listFiles().length + "\n"
+ new Date(aimFile.lastModified()) + "\n请正确选择文件!!");
}
if (aimFile.isFile()) {//当为文件时
jTextAreaSouth.setText("文件名称:\n" + aimFile.getName()
+ "\n大小:" + aimFile.length() + "byte\n"
+ new Date(aimFile.lastModified()));
}
} else {
jTextAreaSouth.setText("\n\n对不起,找不到原文件!\n");
}
}//GEN-LAST:event_jButtonSplitterSourceBrowseActionPerformed
private void jButtonSplitterCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSplitterCancelActionPerformed
//点击取消按钮则清空所有文本框
jTextFieldNumber.setText("");
jTextFieldSplitterSource.setText("");
jTextFieldSplitterTarget.setText("");
if (jRadioButtonSize.isSelected()) {//按文件长度分割
jTextFieldSize.setText("");
}else {
jTextFieldNumber.setText("");
}
}//GEN-LAST:event_jButtonSplitterCancelActionPerformed
private void jButtonSplitterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSplitterActionPerformed
int fileSize = 0;//记录分割后的文件大小
int fileNum = 0;//记录分割后的文件大小
File sourceFile;//记录原始文件路径
jTextAreaSouth.setText("\n分割开始...\n");
sourceFile = new File(jTextFieldSplitterSource.getText().replace("\\", "/"));
if (jRadioButtonSize.isSelected()) {//按文件长度分割
//文件尺寸以字节为单位
if (jComboBoxSize.getSelectedItem() == "MB")
fileSize = (int) (Float.parseFloat(jTextFieldSize.getText()) * 1024 * 1024);
if (jComboBoxSize.getSelectedItem() == "KB")
fileSize = (int) (Float.parseFloat(jTextFieldSize.getText()) * 1024);
if (jComboBoxSize.getSelectedItem() == "B")
fileSize = (int) (Float.parseFloat(jTextFieldSize.getText()));
fileNum = (int) (sourceFile.length() / fileSize);//计算分割成的文件数
if (sourceFile.length() % fileSize != 0) {
fileNum++;
}
}
if (jRadioButtonNumber.isSelected()) {//按文件数进行分割
fileNum = Integer.parseInt(jTextFieldNumber.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对象
File f = new File(jTextFieldSplitterTarget.getText().replace("\\", "/"));
if (!f.exists())
f.createNewFile();//如果文件不存在则创建新文件
for (i = 0; i < newFile.length; i++) {
jTextAreaSouth.append("正在创建第" + (i + 1) + "个文件...\n");
//依次创建分割文件对象
newFile[i] = new File(jTextFieldSplitterTarget.getText().replace("\\", "/"),sourceFile.getName()+"(" + i + ")" );
}
i = 0;
while ((count = in.read(bueff, 0, fileSize)) != -1) {
jTextAreaSouth.append("正在写入第" + (i + 1) + "个文件...\n");
//依次写入分割文件对象
out = new FileOutputStream(newFile[i]);
out.write(bueff, 0, count);
out.close();
i++;
}
in.close();
jTextAreaSouth.append("\n\n分割成功!!");
} catch (Exception e) {
jTextAreaSouth.append("\n\n分割失败!!");
}
}//GEN-LAST:event_jButtonSplitterActionPerformed
private void jRadioButtonNumberItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButtonNumberItemStateChanged
//选中文件数量单选框则文件尺寸文本框和复合框不可用
jTextFieldSize.setEnabled(false);
jComboBoxSize.setEnabled(false);
jTextFieldNumber.setEnabled(true);
}//GEN-LAST:event_jRadioButtonNumberItemStateChanged
private void jRadioButtonSizeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButtonSizeItemStateChanged
//选中文件尺寸单选框则文件数量文本框不可用
jTextFieldSize.setEnabled(true);
jComboBoxSize.setEnabled(true);
jTextFieldNumber.setEnabled(false);
}//GEN-LAST:event_jRadioButtonSizeItemStateChanged
private void jRadioButtonUnionItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButtonUnionItemStateChanged
//选中合并单选框则显示文件合并JPanel以及合并提示信息
CardLayout cardUnion=(CardLayout) jPanelCenter.getLayout();
cardUnion.show(jPanelCenter,"cardUnion");
jTextAreaSouth.setText("合并使用方法:\n原始文件输入要合并的文件或它们所在文件夹,保存位置输入的\n为合并后的文件,若该文件已经存在,则将该文件与原文件合并。");
}//GEN-LAST:event_jRadioButtonUnionItemStateChanged
private void jRadioButtonSplitterItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButtonSplitterItemStateChanged
//选中分割单选框则显示文件分割JPanel以及分割提示信息
CardLayout cardSplitter=(CardLayout) jPanelCenter.getLayout();
cardSplitter.show(jPanelCenter,"cardSplitter");
jTextAreaSouth.setText("分割使用方法:\n原始文件输入要分割的文件,保存位置输入分割后的文件\n存放地址,然后选择分割方式,点击确认即可。");
}//GEN-LAST:event_jRadioButtonSplitterItemStateChanged
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.ButtonGroup buttonGroupCenter;
private javax.swing.ButtonGroup buttonGroupNorth;
private javax.swing.JButton jButtonAdd;
private javax.swing.JButton jButtonSplitter;
private javax.swing.JButton jButtonSplitterCancel;
private javax.swing.JButton jButtonSplitterSourceBrowse;
private javax.swing.JButton jButtonSplitterTargetBrowse;
private javax.swing.JButton jButtonUnion;
private javax.swing.JButton jButtonUnionBrowse;
private javax.swing.JButton jButtonUnionCancel;
private javax.swing.JComboBox jComboBoxSize;
private javax.swing.JLabel jLabelNorth;
private javax.swing.JLabel jLabelSplitterSource;
private javax.swing.JLabel jLabelSplitterTarget;
private javax.swing.JLabel jLabelSplitterWay;
private javax.swing.JLabel jLabelUnionSource;
private javax.swing.JLabel jLabelUnionTarget;
private javax.swing.JPanel jPanelCenter;
private javax.swing.JPanel jPanelNorth;
private javax.swing.JPanel jPanelSplitter;
private javax.swing.JPanel jPanelUnion;
private javax.swing.JRadioButton jRadioButtonNumber;
private javax.swing.JRadioButton jRadioButtonSize;
private javax.swing.JRadioButton jRadioButtonSplitter;
private javax.swing.JRadioButton jRadioButtonUnion;
private javax.swing.JScrollPane jScrollPaneSouth;
private javax.swing.JTextArea jTextAreaSouth;
private javax.swing.JTextField jTextFieldNumber;
private javax.swing.JTextField jTextFieldSize;
private javax.swing.JTextField jTextFieldSplitterSource;
private javax.swing.JTextField jTextFieldSplitterTarget;
private javax.swing.JTextField jTextFieldUnionSource;
private javax.swing.JTextField jTextFieldUnionTarget;
// 变量声明结束//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -