⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 framefilesplitter.java

📁 图形界面swing 实现文件分割
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	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 + -