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

📄 applicationfileoperator.java

📁 这是一个用java写的用于操作文件的代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package mircoenorde.FileOperator;

//package fileoperator;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.text.*;
import javax.swing.event.*;


public class ApplicationFileOperator extends JDialog {
    String filepath = "";
    JLabel splitSourceSize, coalitionTotalSize, coalitionTotalCount;
    JTextField SplitSource, SplitTotalCount, SplitEachSize, coalitionSource;
//*****************************************申明结束
     public ApplicationFileOperator(JFrame frame, String title, boolean modal) {
         super(frame, title, modal);
         JPanel contentPanel = (JPanel)this.getContentPane();
         contentPanel.setLayout(new BorderLayout());
         JTabbedPane jtp = new JTabbedPane();
         jtp.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
         JPanel splitPane = new JPanel(new GridLayout(5, 1));
         JPanel splitPane0 = new JPanel(new BorderLayout());
         splitPane0.add(splitPane, BorderLayout.NORTH);
         JPanel splitPane1 = new JPanel(new FlowLayout(FlowLayout.LEADING));
         JPanel splitPane2 = new JPanel(new FlowLayout(FlowLayout.LEADING));
         JPanel splitPane3 = new JPanel(new FlowLayout(FlowLayout.LEADING));
         JPanel splitPane4 = new JPanel(new FlowLayout(FlowLayout.LEADING));
         JPanel splitPane5 = new JPanel();
         splitPane1.add(new JLabel("拆分源文件:"));
         SplitSource = new JTextField(20);
         splitPane1.add(SplitSource);
         JButton SplitJButton = new JButton("浏览");
         SplitJButton.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 SplitJButtonClick(e); //选择要拆分的文件
             }
         });
         splitPane1.add(SplitJButton);
         splitSourceSize = new JLabel("源文件大小:");
         splitPane2.add(splitSourceSize);
         splitPane3.add(new JLabel("拆分的数目:"));
         SplitTotalCount = new JTextField(15);
         SplitTotalCount.setDocument(new NumberDocument()); //限制输入框只能输入数字
         SplitTotalCount.getDocument().addDocumentListener(new DocumentListener() { //给输入框添加事件
             public void changedUpdate(DocumentEvent e) {
                 if (!ApplicationFileOperator.this.SplitTotalCount.isFocusOwner()) {
                     return;
                 }
                 try {
                     SplitTotalCount_changedUpdate(e);
                 } catch (Exception ex) {
                     System.err.println(ex.toString());
                 }
             }

             public void insertUpdate(DocumentEvent e) {
                 if (!ApplicationFileOperator.this.SplitTotalCount.isFocusOwner()) {
                     return;
                 }
                 try {
                     SplitTotalCount_changedUpdate(e);
                 } catch (Exception ex) {
                     System.err.println(ex.toString());
                 }
             }

             public void removeUpdate(DocumentEvent e) {
                 if (!ApplicationFileOperator.this.SplitTotalCount.isFocusOwner()) {
                     return;
                 }
                 try {
                     SplitTotalCount_changedUpdate(e);
                 } catch (Exception ex) {
                     System.err.println(ex.toString());
                 }
             }
         });
         splitPane3.add(SplitTotalCount);
         splitPane4.add(new JLabel("单文件大小:"));
         SplitEachSize = new JTextField(15);
         SplitEachSize.setDocument(new NumberDocument()); //限制输入框只能输入数字
         SplitEachSize.getDocument().addDocumentListener(new DocumentListener() { //给输入框添加事件
             public void changedUpdate(DocumentEvent e) {
                 if (!ApplicationFileOperator.this.SplitEachSize.isFocusOwner()) {
                     return;
                 }
                 try {
                     SplitEachSize_changedUpdate(e);
                 } catch (Exception ex) {
                     System.err.println(ex.toString());
                 }
             }

             public void insertUpdate(DocumentEvent e) {
                 if (!ApplicationFileOperator.this.SplitEachSize.isFocusOwner()) {
                     return;
                 }
                 try {
                     SplitEachSize_changedUpdate(e);
                 } catch (Exception ex) {
                     System.err.println(ex.toString());
                 }
             }

             public void removeUpdate(DocumentEvent e) {
                 if (!ApplicationFileOperator.this.SplitEachSize.isFocusOwner()) {
                     return;
                 }
                 try {
                     SplitEachSize_changedUpdate(e);
                 } catch (Exception ex) {
                     System.err.println(ex.toString());
                 }
             }
         });
         splitPane4.add(SplitEachSize);
         JButton SplitJB = new JButton("开始拆分");
         SplitJB.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 try {
                     SplitJBClick(e);
                 } catch (Exception ex) {
                     System.err.println(ex.toString());
                 } //拆分文件
             }
         });
         splitPane5.add(SplitJB);
         splitPane.add(splitPane1);
         splitPane.add(splitPane2);
         splitPane.add(splitPane3);
         splitPane.add(splitPane4);
         splitPane.add(splitPane5);
         JPanel coalitionPane0 = new JPanel(new BorderLayout());
         JPanel coalitionPane = new JPanel(new GridLayout(4, 1));
         coalitionPane0.add(coalitionPane, BorderLayout.NORTH);
         JPanel coalitionPane1 = new JPanel(new FlowLayout(FlowLayout.LEADING));
         JPanel coalitionPane2 = new JPanel(new FlowLayout(FlowLayout.LEADING));
         JPanel coalitionPane3 = new JPanel(new FlowLayout(FlowLayout.LEADING));
         JPanel coalitionPane4 = new JPanel();
         coalitionPane1.add(new JLabel("合并首文件:"));
         coalitionSource = new JTextField(20);
         coalitionPane1.add(coalitionSource);
         JButton coalitionJButton = new JButton("浏览");
         coalitionJButton.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 coalitionJButtonClick(e); //选择要合并的首文件
             }
         });
         coalitionPane1.add(coalitionJButton);
         coalitionPane.add(coalitionPane1);
         coalitionTotalSize = new JLabel("文件总大小:");
         coalitionPane2.add(coalitionTotalSize);
         coalitionPane.add(coalitionPane2);
         coalitionTotalCount = new JLabel("文件总数目:");
         coalitionPane3.add(coalitionTotalCount);
         coalitionPane.add(coalitionPane3);
         JButton coalitionJB = new JButton("开始合并");
         coalitionJB.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 try {
                     coalitionJBClick(e);
                 } catch (Exception ex) {
                     System.err.println(ex.toString());
                 } //合并文件
             }
         });
         coalitionPane4.add(coalitionJB);
         coalitionPane.add(coalitionPane4);
         jtp.add("拆分文件", splitPane0);
         jtp.add("合并文件", coalitionPane0);
         contentPanel.add(jtp, BorderLayout.CENTER);
         this.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {

                 dispose(); //当关闭窗口时退出系统
             }
         });
         //this.setVisible(true);
//********************************************以上为图形界面设计
     }

    private void SplitJBClick(ActionEvent e) throws Exception { //拆分文件操作
        File file = new File(this.SplitSource.getText());
        if (!file.exists()) {
            JOptionPane.showMessageDialog(this, "源文件不存在!", "error",
                                          JOptionPane.ERROR_MESSAGE);
            return;
        }
        javax.swing.JFileChooser fjc;
        fjc = new javax.swing.JFileChooser(filepath);
        fjc.removeChoosableFileFilter(fjc.getAcceptAllFileFilter());
        fjc.setDialogTitle("选择保存目录");
        fjc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        if (fjc.APPROVE_OPTION != fjc.showOpenDialog(this)) {
            return;
        }
        filepath = fjc.getSelectedFile().getPath();
        byte[] b = new byte[1024];
        int read = 0;
        String splitfilename = file.getName();
        int eachfilesize = Integer.parseInt(this.SplitEachSize.getText());
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos;
        String savesplitfilename = "";
        for (long splitcount = 0;
                               splitcount < Long.parseLong(this.SplitTotalCount.
                getText()); splitcount++) {
            savesplitfilename = fjc.getSelectedFile() + "/" + splitfilename +
                                ".";
            if (String.valueOf(splitcount).length() == 1) {
                savesplitfilename += "00" + splitcount +
                        ".others";
            } else if (String.valueOf(splitcount).length() == 2) {
                savesplitfilename += "0" + splitcount +
                        ".others";
            } else {
                savesplitfilename += splitcount +
                        ".others";
            }
            fos = new FileOutputStream(savesplitfilename);
            int eachread = b.length;
            int hasread = 0;
            while ((read = fis.read(b, 0, eachread)) > 0) {
                fos.write(b, 0, read);
                fos.flush();
                hasread += read;
                if (hasread >= eachfilesize &&
                    splitcount !=
                    Long.parseLong(this.SplitTotalCount.getText()) - 1) {
                    break;
                }
                if (eachfilesize - hasread < (long) b.length) {
                    eachread = eachfilesize - hasread;
                }
            }
            fos.close();
        }
        fos = null;
        JOptionPane.showMessageDialog(this, "拆分完成");
    }

    private void coalitionJBClick(ActionEvent e) throws Exception { //合并文件操作
        File file = new File(this.coalitionSource.getText());
        if (!file.exists()) {
            JOptionPane.showMessageDialog(this, "源文件不存在!", "error",
                                          JOptionPane.ERROR_MESSAGE);
            return;
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -