国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java文件選擇對話框(文件選擇器JFileChooser)的使用:以一個文件加密器為例

2019-11-15 00:44:06
字體:
來源:轉載
供稿:網友
java文件選擇對話框(文件選擇器JFileChooser)的使用:以一個文件加密器為例

文件加密器,操作過程肯定涉及到文件選擇器的使用,所以這里以文件加密器為例。下例為我自己寫的一個文件加密器,沒什么特別的加密算法,只為演示文件選擇器JFileChooser的使用。

加密器界面如圖:

項目目錄結構如圖:

下面貼出各個文件的源代碼:

MainForm.java

package com.lidi;import javax.swing.*;import java.awt.*;public class MainForm extends JFrame {    /**     * 構造界面     *      * @author 1109030125     */    PRivate static final long serialVersionUID = 1L;    /* 主窗體里面的若干元素 */    private JFrame mainForm = new JFrame("TXT文件加密"); // 主窗體,標題為“TXT文件加密”    private JLabel label1 = new JLabel("請選擇待加密或解密的文件:");    private JLabel label2 = new JLabel("請選擇加密或解密后的文件存放位置:");    public static JTextField sourcefile = new JTextField(); // 選擇待加密或解密文件路徑的文本域    public static JTextField targetfile = new JTextField(); // 選擇加密或解密后文件路徑的文本域    public static JButton buttonBrowseSource = new JButton("瀏覽"); // 瀏覽按鈕    public static JButton buttonBrowseTarget = new JButton("瀏覽"); // 瀏覽按鈕    public static JButton buttonEncrypt = new JButton("加密"); // 加密按鈕    public static JButton buttonDecrypt = new JButton("解密"); // 解密按鈕    public MainForm() {        Container container = mainForm.getContentPane();        /* 設置主窗體屬性 */        mainForm.setSize(400, 270);// 設置主窗體大小        mainForm.setDefaultCloSEOperation(WindowConstants.EXIT_ON_CLOSE);// 設置主窗體關閉按鈕樣式        mainForm.setLocationRelativeTo(null);// 設置居于屏幕中央        mainForm.setResizable(false);// 設置窗口不可縮放        mainForm.setLayout(null);        mainForm.setVisible(true);// 顯示窗口        /* 設置各元素位置布局 */        label1.setBounds(30, 10, 300, 30);        sourcefile.setBounds(50, 50, 200, 30);        buttonBrowseSource.setBounds(270, 50, 60, 30);        label2.setBounds(30, 90, 300, 30);        targetfile.setBounds(50, 130, 200, 30);        buttonBrowseTarget.setBounds(270, 130, 60, 30);        buttonEncrypt.setBounds(100, 180, 60, 30);        buttonDecrypt.setBounds(200, 180, 60, 30);        /* 為各元素綁定事件監聽器 */        buttonBrowseSource.addActionListener(new BrowseAction()); // 為源文件瀏覽按鈕綁定監聽器,點擊該按鈕調用文件選擇窗口        buttonBrowseTarget.addActionListener(new BrowseAction()); // 為目標位置瀏覽按鈕綁定監聽器,點擊該按鈕調用文件選擇窗口        buttonEncrypt.addActionListener(new EncryptAction()); // 為加密按鈕綁定監聽器,單擊加密按鈕會對源文件進行加密并輸出到目標位置        buttonDecrypt.addActionListener(new DecryptAction()); // 為解密按鈕綁定監聽器,單擊解密按鈕會對源文件進行解密并輸出到目標位置        sourcefile.getDocument().addDocumentListener(new TextFieldAction());// 為源文件文本域綁定事件,如果文件是.txt類型,則禁用解密按鈕;如果是.kcd文件,則禁用加密按鈕。        sourcefile.setEditable(false);// 設置源文件文本域不可手動修改        targetfile.setEditable(false);// 設置目標位置文本域不可手動修改        container.add(label1);        container.add(label2);        container.add(sourcefile);        container.add(targetfile);        container.add(buttonBrowseSource);        container.add(buttonBrowseTarget);        container.add(buttonEncrypt);        container.add(buttonDecrypt);    }    public static void main(String args[]) {        new MainForm();    }}

BrowseAction.java

package com.lidi;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFileChooser;import javax.swing.filechooser.FileNameExtensionFilter;public class BrowseAction implements ActionListener {    @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource().equals(MainForm.buttonBrowseSource)) {            JFileChooser fcDlg = new JFileChooser();            fcDlg.setDialogTitle("請選擇待加密或解密的文件...");            FileNameExtensionFilter filter = new FileNameExtensionFilter(                    "文本文件(*.txt;*.kcd)", "txt", "kcd");            fcDlg.setFileFilter(filter);            int returnVal = fcDlg.showOpenDialog(null);            if (returnVal == JFileChooser.APPROVE_OPTION) {                String filepath = fcDlg.getSelectedFile().getPath();                MainForm.sourcefile.setText(filepath);            }        } else if (e.getSource().equals(MainForm.buttonBrowseTarget)) {            JFileChooser fcDlg = new JFileChooser();            fcDlg.setDialogTitle("請選擇加密或解密后的文件存放目錄");            fcDlg.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);            int returnVal = fcDlg.showOpenDialog(null);            if (returnVal == JFileChooser.APPROVE_OPTION) {                String filepath = fcDlg.getSelectedFile().getPath();                MainForm.targetfile.setText(filepath);            }        }    }}
查看代碼

EncryptAction.java

package com.lidi;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JOptionPane;public class EncryptAction implements ActionListener {    @Override    public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub        if (MainForm.sourcefile.getText().isEmpty()) {            JOptionPane.showMessageDialog(null, "請選擇待加密文件!");        }        else if (MainForm.targetfile.getText().isEmpty()) {            JOptionPane.showMessageDialog(null, "請選擇加密后文件存放目錄!");        }        else {            String sourcepath = MainForm.sourcefile.getText();            String targetpath = MainForm.targetfile.getText();            File file = new File(sourcepath);            String filename = file.getName();            File dir = new File(targetpath);            if (file.exists() && dir.isDirectory()) {                File result = new File(getFinalFile(targetpath, filename));                if (!result.exists()) {                    try {                        result.createNewFile();                    } catch (IOException e1) {                        JOptionPane.showMessageDialog(null,                                "目標文件創建失敗,請檢查目錄是否為只讀!");                    }                }                try {                    FileReader fr = new FileReader(file);                    FileWriter fw = new FileWriter(result);                    int ch = 0;                    while ((ch = fr.read()) != -1) {                        // System.out.print(Encrypt(ch));                        fw.write(Encrypt(ch));                    }                    fw.close();                    fr.close();                    JOptionPane.showMessageDialog(null, "加密成功!");                } catch (Exception e1) {                    JOptionPane.showMessageDialog(null, "未知錯誤!");                }            }            else if (!file.exists()) {                JOptionPane.showMessageDialog(null, "待加密文件不存在!");            } else {                JOptionPane.showMessageDialog(null, "加密后文件存放目錄不存在!");            }        }    }    public char Encrypt(int ch) {        int x = ch + 1;        return (char) (x);    }    public String getFinalFile(String targetpath, String filename) {        int length = filename.length();        String finalFileName = filename.substring(0, length - 4);        String finalFile = targetpath + "http://" + finalFileName + ".kcd";        return finalFile;    }}
查看代碼

DecryptAction.java

package com.lidi;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JOptionPane;public class DecryptAction implements ActionListener {    @Override    public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub        if (MainForm.sourcefile.getText().isEmpty()) {            JOptionPane.showMessageDialog(null, "請選擇待解密文件!");        }        else if (MainForm.targetfile.getText().isEmpty()) {            JOptionPane.showMessageDialog(null, "請選擇解密后文件存放目錄!");        }        else {            String sourcepath = MainForm.sourcefile.getText();            String targetpath = MainForm.targetfile.getText();            File file = new File(sourcepath);            String filename = file.getName();            File dir = new File(targetpath);            if (file.exists() && dir.isDirectory()) {                File result = new File(getFinalFile(targetpath, filename));                if (!result.exists()) {                    try {                        result.createNewFile();                    } catch (IOException e1) {                        JOptionPane.showMessageDialog(null,                                "目標文件創建失敗,請檢查目錄是否為只讀!");                    }                }                try {                    FileReader fr = new FileReader(file);                    FileWriter fw = new FileWriter(result);                    int ch = 0;                    while ((ch = fr.read()) != -1) {                        // System.out.print(Encrypt(ch));                        fw.write(Decrypt(ch));                    }                    fw.close();                    fr.close();                    JOptionPane.showMessageDialog(null, "解密成功!");                } catch (Exception e1) {                    JOptionPane.showMessageDialog(null, "未知錯誤!");                }            }            else if (!file.exists()) {                JOptionPane.showMessageDialog(null, "待解密文件不存在!");            } else {                JOptionPane.showMessageDialog(null, "解密后文件存放目錄不存在!");            }        }    }    public char Decrypt(int ch) {        // double x = 0 - Math.pow(ch, 2);        int x = ch - 1;        return (char) (x);    }    public String getFinalFile(String targetpath, String filename) {        int length = filename.length();        String finalFileName = filename.substring(0, length - 4);        String finalFile = targetpath + "http://" + finalFileName + ".txt";        return finalFile;    }}
查看代碼

TextFieldAction.java

package com.lidi;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;public class TextFieldAction implements DocumentListener {    @Override    public void insertUpdate(DocumentEvent e) {        // TODO Auto-generated method stub        ButtonAjust();    }    @Override    public void removeUpdate(DocumentEvent e) {        // TODO Auto-generated method stub        ButtonAjust();    }    @Override    public void changedUpdate(DocumentEvent e) {        // TODO Auto-generated method stub        ButtonAjust();    }    public void ButtonAjust() {        String file = MainForm.sourcefile.getText();        if (file.endsWith("txt")) {            MainForm.buttonDecrypt.setEnabled(false);            MainForm.buttonEncrypt.setEnabled(true);        }        if (file.endsWith("kcd")) {            MainForm.buttonEncrypt.setEnabled(false);            MainForm.buttonDecrypt.setEnabled(true);        }    }}
查看代碼


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新兴县| 开平市| 梅州市| 读书| 禹州市| 佛冈县| 连云港市| 隆德县| 诏安县| 玛多县| 新巴尔虎左旗| 丽江市| 百色市| 黎川县| 五寨县| 车致| 遵义县| 郁南县| 三台县| 铁岭县| 辽阳市| 宁安市| 宜都市| 西吉县| 景谷| 柳河县| 利辛县| 临颍县| 永州市| 临湘市| 奉化市| 元朗区| 习水县| 柳林县| 金昌市| 建阳市| 阿巴嘎旗| 涟源市| 灌云县| 望谟县| 襄垣县|