2
對於我的新項目,我嘗試在gui中選擇文檔後對其進行編碼。我的程序包含兩個部分,一個選擇文件,另一個對其進行編碼。所以在選擇一個文件之後,應該調用加密方法,但它並不真正起作用,因爲路徑似乎沒有被採用。使用Java中的FileChooser進行選擇後加密文件
public class frame1 {
String filepath;
public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IOException {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Test");
frame.getContentPane().setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Encrypt");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFileChooser fileChooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("TEXT FILES","txt", "text");
fileChooser.setFileFilter(filter);
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
System.out.println(selectedFile.getAbsolutePath());
String filepath = selectedFile.getAbsolutePath();
}
frame.getContentPane().add(button);
frame.pack();
frame.setVisible(true);
public void encrypt() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IOException {
KeyGenerator keygenerator = KeyGenerator.getInstance("AES");
SecretKey myDesKey = keygenerator.generateKey();
Cipher desalgCipher;
desalgCipher = Cipher.getInstance("AES");
desalgCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
Path path = Paths.get(filepath);
try(InputStream is = Files.newInputStream(path);
CipherInputStream cipherIS = new CipherInputStream(is, desalgCipher);
BufferedReader reader = new BufferedReader(new InputStreamReader(cipherIS));){
String line;
while((line = reader.readLine()) != null){
System.out.println(line);
}
}
}
}
但它沒有絕對路徑,用戶選擇一個文件,或者你是什麼意思? –
您的程序存在許多問題。你在哪裏添加按鈕到框架?你在哪裏設置框架可見?你有'filepath'作爲類'frame1'中的一個字段,但你永遠不會實例化該類的一個對象。 – ck1
@ ck1我的不好,我糾正了它。但是我會在主要方法內部運行該方法或將其粘貼到那裏 –