Получение относительного пути к файлу, хранящемуся в WEB-INF? - PullRequest
0 голосов
/ 12 ноября 2018

Я новичок в изучении Java.

У меня проблемы с поиском пути к файлу

readPublicKeyFromFile("C:\Users\myname\workspace\MyProject\WebContent\WEB-INF\Config\My_Public.key");

для одного из моих методов:

public byte[] encryptData(String data) throws IOException {


        byte[] dataToEncrypt = data.getBytes();
        byte[] encryptedData = null;

        try
        {
            PublicKey pubKey = readPublicKeyFromFile("C:\Users\myname\workspace\MyProject\WebContent\WEB-INF\Config\My_Public.key");
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.ENCRYPT_MODE, pubKey);
            encryptedData = cipher.doFinal(dataToEncrypt);
            System.out.println("Encrypted Data: " + encryptedData);
        }
        catch (IOException | NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException | NoSuchPaddingException e)
        {
            e.printStackTrace();
        }   

        System.out.println("--ENCRYPTION COMPLETED--");
        return encryptedData;
    }

Файл My_Public.key хранится в C:\Users\myname\workspace\MyProject\WebContent\WEB-INF\Config\My_Public.key в моей компьютерной системе и в моей иерархии Eclipse Project выглядит следующим образом:

> MyProject
  > WebContent
     > WEB-INF
        > Config
           > My_Public.key
     > META-INF

Это отлично работает , если я использую относительный путь "C:/Users/myname/workspace/MyProject/WebContent/WEB-INF/Config/My_Public.key. Но я не хочу использовать относительный путь C:/Users/myname/..., поскольку он не будет работать, когда я загружаю свое веб-приложение на Java в Интернете.

Я пытаюсь использовать какой-нибудь путь, например:

readPublicKeyFromFile(getServletContext().getRealPath("/WebContent/WEB-INF/Config/My_Public.key"));

Но это дает мне эту ошибку:

java.io.FileNotFoundException: WebContent \ WEB-INF \ Config \ My_Public.key (Система не может найти указанный путь)

Как я могу прочитать из моего файла:

> MyProject
      > WebContent
         > WEB-INF
            > Config
               > My_Public.key //How can I read from this file in the correct path?
         > META-INF

1 Ответ

0 голосов
/ 12 ноября 2018

Используйте следующее

readPublicKeyFromFile(getServletContext().getRealPath("/WEB-INF/Config/My_Public.key"));
...