Ler Arquivo pdf ou txt no java

Olá estou fazendo um trabalho do curso em que tenho que pegar um arquivo pdf ou o txt que o professor passou e encriptar ele pelos algoritmos cifra de cesar, playfrai e transposição , gostaria de saber como faço para meu algoritmo ler esse arquivo ou em pdf ou o txt e encriptar no formato pedido , pois toda vez que passo muito text grande ele quebra .

PF ajudem !!!

Nunca tinha tentado ler PDFs, mas pelo que pesquisei agora, parece que o Java não faz isso nativamente, vc precisaria de uma biblioteca de terceiros tipo essa:

https://pdfbox.apache.org/

É muito provável que seu professor se contente com vc lendo apenas TXTs, isto é, dependendo de que curso vc tá fazendo.

De qualquer forma, vc chegou a escrever algum código? Se quiser saber o zero como abrir e ler arquivos no Java, recomendo o tutorial oficial:

https://docs.oracle.com/javase/tutorial/essential/io/index.html

Acho que a parte que te interessa começa em Character Streams, mas sugiro que leia desde o inicio.

Não vejo necessidade de utilizar uma biblioteca para manuseio de PDF.
O que nosso colega quer é encriptar o conteúdo do arquivo, isto é, bagunçar os bytes que o compõe.

Posta o código que você escreveu, provavelmente estás tentando carregar todo o conteúdo do arquivo para a memória, isso não é legal, vá encriptando em pequenos blocos de 4KB ou 8KB.

1 curtida

Verdade! Eu não tinha me atentado pro real problema que é o fato do programa quebrar ao passar arquivo grande.

Desculpa não ter colocado o código
Esse é um dos algoritmos que pretendo usar para fazer a atividade , se vcs tiverem outra sugestão aceito.
A atividade se consiste em pegar ou um arquivo PDF ou TXT e encriptar nas determinadas formas que eu passei , cifra de cesar entre outros .
public static class CaesarCipher
{
public static final String ALPHABET = “abcdefghijklmnopqrstuvwxyz”;

    public static String encrypt(String plainText, int shiftKey)
    {
        plainText = plainText.toLowerCase();
        String cipherText = "";
        for (int i = 0; i < plainText.length(); i++)
        {
            int charPosition = ALPHABET.indexOf(plainText.charAt(i));
            int keyVal = (shiftKey + charPosition) % 26;
            char replaceVal = ALPHABET.charAt(keyVal);
            cipherText += replaceVal;
        }
        return cipherText;
    }
 
    public static String decrypt(String cipherText, int shiftKey)
    {
        cipherText = cipherText.toLowerCase();
        String plainText = "";
        for (int i = 0; i < cipherText.length(); i++)
        {
            int charPosition = ALPHABET.indexOf(cipherText.charAt(i));
            int keyVal = (charPosition - shiftKey) % 26;
            if (keyVal < 0)
            {
                keyVal = ALPHABET.length() + keyVal;
            }
            char replaceVal = ALPHABET.charAt(keyVal);
            plainText += replaceVal;
        }
        return plainText;
    }
 
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Digie a palavra para encriptar: ");
        String message = new String();
        message = sc.next();
        System.out.println("Encriptada : ");
        System.out.println(encrypt(message, 3));
        System.out.println("Mensagem digitada primeiro : ");
        System.out.println(decrypt(encrypt(message, 3), 3));
        sc.close();
    }
}

}