-2
votes

Pourquoi mon java.util.scanner n'a-t-il pas lu mon dossier?

Mon scanner ne lit pas mon fichier existant qui est lu à la lecture d'un bufferedreader, mais les bufferedreaders ne prennent pas en charge l'encodage UTF-8 que mon fichier a besoin.

J'ai déjà utilisé une bufferedreader (même avec UTF-8 qui Je ne me suis pas donné des lettres comme "¤" (lettre allemande) mais m'a donné des symboles d'interrogation maladroits à la place). Et j'ai bien sûr déjà utilisé un scanner. xxx

Il renvoie simplement une arrache -liste vide, mais ne déclenche pas la FilenotFoundException. Le themeefile est un fichier existant.


5 commentaires

Avez-vous des déclarations d'impression déboguées / ajoutées pour voir ce qui se passe avec le code? Est-ce que la boucle tandis que la boucle est entrée?


bufferedreader prend en charge le texte UTF-8.


Bien sûr, la boucle tandis que la boucle n'est pas entrée, car la flambée renvoyée a une taille de 0


Dans votre bloc Catch, vous renvoyez également une liste vide . Êtes-vous sûr qu'aucun message d'erreur n'est imprimé?


Oui. Il n'y a pas de message d'erreur du tout


4 Réponses :


0
votes

Vous devez spécifier le codage pour le fichier, s'il s'agit de quelque chose d'autre que votre système par défaut. Dans votre cas, ce sera l'endroit où vous créez le scanner . xxx


4 commentaires

Ce n'est pas mon problème. Mon problème est que cela ne trouve aucune ligne dans mon fichier


Ok, que se passe-t-il si vous vérifiez themeefile.exists () avant de faire autre chose? Vous venez probablement d'avoir un mauvais chemin dans themeefile .


Non, car quand j'ai utilisé exactement le même fichier avec une bufferedreader, cela a fonctionné


Votre problème peut être causé par le mauvais nom de fichier ou par un fichier qui ne peut pas être lu ou en utilisant le mauvais encodage. Avez-vous essayé ma solution?



0
votes

Sans le fichier à regarder, nous devinons tous simplement au problème.

Voici une hypothèse: il n'y a pas de ligne suivante, donc la boucle tandis que la boucle est immédiate et vous obtenez une arraylist vide. Ce serait le cas s'il n'y a pas de nouvelle ligne dans le fichier texte.


1 commentaires

Dois-je télécharger mon fichier sur un site Web?



0
votes

Si vous utilisez Java 8+, je recommanderais d'utiliser Fichiers # Lignes Code> Méthode:

try (Stream<String> stream = Files.lines(themeFile.toPath())) {
    stream.collect(Collectors.toList()); //need to be stored in a variable.
} catch (IOException e) {
    e.printStackTrace();
}


2 commentaires

Celui-ci lance également après l'erreur suivante: java.io.unchececedioException: java.nio.charset.malformedInputException: longueur d'entrée = 1


@Marlon Check Ce pour résoudre l'exception.



0
votes

J'ai eu le même problème avec le niveau de l'API 28. Cela a fonctionné pour moi: xxx

et doit importer: xxx


0 commentaires