2017-08-25 89 views
0

我正在加密我的程序中的一個文件,並在我的桌面上創建一個無擴展名的文件,它完全適用於txt,但是一些擴展名如pdf,rtf正在彈出錯誤消息。我正在嘗試爲選定的文件創建完全相同的文件名。獲取加密文件的文件名

runEncrypt.setOnAction(new EventHandler<ActionEvent>() { 
       @Override 
       public void handle(ActionEvent event) { 

        File inputFile = new File(selectedFile.getAbsolutePath()); 
        File encryptedFile = new File("/Users/aktasberk/Desktop/E_"+selectedFile.getName()); 
        try { 
         String key = "16BitKeyIsHere16"; 
         CryptoUtils.encrypt(key, inputFile, encryptedFile); 
         // CryptoUtils.decrypt(key, encryptedFile, decryptedFile); 
        } catch (CryptoException ex) { 
         System.out.println(ex.getMessage()); 
         ex.printStackTrace(); 
        } 
       } 
      }); 

正如你可以看到我把「E_ + selectedFile.getname()」的工作,我應該怎麼辦得到的只有文件名沒有「E_」,仍然在桌面上創建文件。

謝謝!

+3

你得到的錯誤信息是什麼? –

+0

@ patrick-hainge不在編譯器中,但是當我嘗試從桌面上打開該加密文件時,它顯示一些消息,如「損壞的文件無法打開」,然後我轉到文件首選項並手動刪除其擴展名,它可以這樣工作。 –

+1

那麼,當您加密文件並保留文件擴展名時,相關軟件無法打開該文件。你應該在寫入加密文件之前從文件名中刪除擴展名 – Michael

回答

1

像txt這樣的文件擴展名是純文本,只保存包含的文本。 PDF文件有其他的數據,例如你在pdf查看器中沒有看到的元數據,所以當你試圖打開一個已經加密的文件* .pdf時,內部數據的格式變化並且不遵循pdf風格,所以口譯員不能主動閱讀。

例如,如果PDF格式要求提交一個像「信紙大小」,一個當你加密其轉換爲AsG45文件,觀衆無法讀取它,並檢測到該文件已損壞

你的情況,如果要在桌面上保存後解密,則可以命名文件E_extension_fileName。有了這個,你可以在將來解密文件,並知道原始文件有什麼擴展名

+0

謝謝,我明白了。在某一點上,用戶必須手動執行這些命名和擴展內容,就像您提到的那樣,以備將來使用。 –

+0

@BerkAktaş如果你用點分割selectedFile.getName(),你可以在代碼中完成它。數組中的第二個位置是擴展名 –