web-dev-qa-db-fra.com

java utilise ou remplace une erreur d'API obsolète

Bonjour donc c'est mon code, d'une manière ou d'une autre j'obtiens toujours une erreur là-bas, j'ai décrit l'erreur, toute aide serait appréciée. Je ne suis pas vraiment expert en importation et surtout en API elle-même

   import Java.io.BufferedInputStream;
    import Java.io.DataInputStream;
    import Java.io.File;
    import Java.io.FileInputStream;
    import Java.io.IOException;

    public class MyClass {

        public static void main(String[] args) throws IOException {
            File file = new File("Sinatra.txt");
            FileInputStream fis = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(fis);
            DataInputStream dis = new DataInputStream(bis);

            if (dis.available() != 0) {
                // Get the line.
                String s = dis.readLine();
                // Put words to array.
                String[] sParts = s.split(" ");
                // Initialize Word longest length.
                int longestLength = 1;
                for (String strx : sParts) { // Go through each sPart, the next one is called strx
                    // If the document has Word longer than.
                    if (longestLength < strx.length())
                        // Set new value for longest length.
                        longestLength = strx.length();
                }
                // Because array index from "0".
                int[] counts = new int[longestLength + 1];
                for (String str : sParts) {
                    // Add one to the number of words that length has
                    counts[str.length()] += 1;
                }
                // We use this type of loop since we need the length.
                for (int i = 1; i < counts.length; i++) {
                    System.out.println(i + " letter words: " + counts[i]);
                }
            }
        }
    }

    // Result:
    //        1 letter words: 0
    //        2 letter words: 2
    //        3 letter words: 0
    //        4 letter words: 1
    //        5 letter words: 0
    //        6 letter words: 2
    //        7 letter words: 2
    //        8 letter words: 0
    //        9 letter words: 3

Bonjour c'est mon code et quand j'essaye de le compiler j'obtiens une erreur en disant:

Note: MyClass.Java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Merci pour l'aide :)

5
Anton9988

Dans la documentation de l'API DataInputStream:

readLine ()

Obsolète.

Cette méthode ne convertit pas correctement les octets en caractères. Depuis JDK 1.1, la façon préférée de lire les lignes de texte est via la méthode BufferedReader.readLine (). Les programmes qui utilisent la classe DataInputStream pour lire des lignes peuvent être convertis pour utiliser la classe BufferedReader en remplaçant le code du formulaire:

DataInputStream d = new DataInputStream(in);

avec: BufferedReader d = new BufferedReader(new InputStreamReader(in));

Donc, comme vous pouvez le voir, dans la ligne String s = dis.readLine() dans votre code, vous utilisez une méthode obsolète. Cela signifie qu'il existe une meilleure option pour faire ce que vous faites (comme souligné ci-dessus). Même si la méthode est obsolète, elle fonctionnera probablement dans certains cas. Mais il n'est plus garanti de remplir son contrat, et il est donc préférable d'utiliser la méthode BufferedReader.readLine() similaire mais cohérente.

1
connorp