Mon code ne fonctionne pas correctement, j'essaie de décrypter un message, mais à la place, j'obtiens quelque chose comme , 0, 3, ,, , 5, 7, <, ;, , ;, 9, ,, (, 4, , , -, ,, ), (, , �, ￸]

Veuillez m'aider à trouver où je me trompe:

public class WorkInFile {
    public static void main(String[] args) throws IOException {
        FileInputStream encoded=new FileInputStream("C://Games//encoded.txt");//contains ƪÄÖØÐîÃÜÙäÌÊÛÓÕÒáÄßÕÍǨ³¾êÉàÝâÝãƒâÝäìÚÇäÖçÅáâÄÄÌØÐƭèÑØǑÚÚŲã¨
            FileInputStream coded = new FileInputStream("C://Games//code.txt");//contains icbakwtbxxvcelsmjpbochqlltowxhlhvhyywsyqraargpdsycikmgeakonpiwcqmofwms
            String text = encoded.toString();
            String text2=coded.toString();
            char[] chars=text.toCharArray();
            char[] chars2=text2.toCharArray();

            int index=0;
            char[] res=new char[text.length()];
            for (char aChar : chars) {
                for (char c : chars2) {
                    res[index] = (char) (aChar - c);
                }
                index++;
            }
            String result= Arrays.toString(res);
            System.out.println(result);
    }
}
0
Eban Nick 14 janv. 2020 à 11:11

2 réponses

Meilleure réponse

Si le message attendu est en japonais et qu'il parle de données soviétiques, ce code est pour vous.

Vous devez utiliser un BufferedReader pour lire le fichier et un StringBuilder pour construire une chaîne avec ce que le BufferedReader extrait du fichier.

public static void main(String args[]) {

    String text;
    String text2;

    try {
        Path encodedPath = Paths.get("C://Games//encoded.txt");
        File encodedFile = new File(String.valueOf(encodedPath));

        Path codedPath = Paths.get("C://Games//code.txt");
        File codedFile = new File(String.valueOf(codedPath));

        StringBuilder codedBuilder = new StringBuilder();
        StringBuilder encodedBuilder = new StringBuilder();

        try (
            FileInputStream encoded = new FileInputStream(encodedFile.getAbsolutePath());
            FileInputStream coded = new FileInputStream(codedFile.getAbsolutePath())
        ) {

            try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(coded))) {
                String line;
                while ((line = bufferedReader.readLine()) != null){
                    codedBuilder.append(line);        
                }
                text = codedBuilder.toString();
            }
            try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(encoded))){
                String line;
                while ((line = bufferedReader.readLine()) != null){
                    encodedBuilder.append(line);
                }
                text2 = encodedBuilder.toString();
            }

            char[] chars = text.toCharArray();
            char[] chars2 = text2.toCharArray();

            int index = 0;
            char[] res = new char[text.length()];
            for (char aChar : chars) {
                for (char c : chars2) {
                    res[index] = (char) (aChar - c);
                }
                index++;
            }
            String result = Arrays.toString(res);
            System.out.println(result);
        }
    }
    catch (IOException e) {
        e.printStackTrace();
    }
}

Faites-moi savoir si c'est ce que vous vouliez!

0
Wai Ha Lee 14 janv. 2020 à 13:23

Files.readAllBytes (Paths.get ("file-path"))

Java propose désormais une belle ligne unique pour lire le contenu des fichiers.

Voici le code de travail pour récupérer le contenu d'un fichier sous forme de chaîne:

// WorkInFile.java

import java.nio.file.*;

public class WorkInFile {
    public static void main(String[] args) {
        try {
            String text = new String(Files.readAllBytes(Paths.get("encoded.txt")));
            System.out.println("Encoded.txt = " + text);

            String text2 = new String(Files.readAllBytes(Paths.get("code.txt")));
            System.out.println("code.txt = " + text2);

            } catch (Exception ex) {
                System.out.println(ex.toString());
            }
    }
}        
1
Gopinath 14 janv. 2020 à 10:03