2017-10-12 5 views
-1

Je n'arrive pas à faire en sorte que mon programme Java puisse lire les fichiers texte.Bufferedreader et InputStreamReader

public static void main(String[] args) throws java.io.IOException { 

     InputStreamReader isr = new InputStreamReader(System.in); 
     BufferedReader br = new BufferedReader(isr); 

     try { 
      long base = Long.parseLong(args[0]); 

      String input = br.readLine(); //read first line till the end of file 

      long list = Long.parseLong(input); 

      convertBase(base, list); 
     } 
     finally { 
      br.close(); 
     } 
} 

Le programme fonctionne lorsque je tape manuellement les valeurs dans la ligne de commande, mais lorsque je tente d'utiliser un fichier texte, il jette des exceptions:

Exception in thread "main" java.lang.NumberFormatException: For input string: "baseconverion.txt" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Long.parseLong(Long.java:589) 
at java.lang.Long.parseLong(Long.java:631) 
at FromDecimal.main(FromDecimal.java:46) 

Je ne sais pas ce que je fais mal/manquants .

+0

Vous devez imprimer 'input' avant d'essayer de le traiter - vous pourriez être surpris par son contenu. – alfasin

+1

Vous essayez d'analyser un nom de fichier en tant que 'long'. Solution: ne pas. NB 'readLine()' ne lit pas la première ligne jusqu'à la fin du fichier. Pourquoi essayez-vous d'analyser un fichier texte en tant que «longs» en premier lieu? – EJP

+0

Je dois analyser les longs parce que j'ai une autre méthode où je convertis le nombre décimal en base –

Répondre

0

lorsque je tente d'utiliser un fichier texte

Tu veux dire quand j'entrer un nom de fichier au lieu d'un numéro. Vous n'essayez pas d'utiliser un fichier texte du tout. Tout ce que vous faites est d'entrer un nom de fichier sur la console. Il n'y a rien ici qui ouvre ou lit un fichier texte quel qu'il soit. Java n'est pas magique: il ne se rendra pas compte magiquement que c'est un nom de fichier et l'ouvrira magiquement pour vous.

Vous devez lire à propos des E/S de fichiers dans le didacticiel Java et Javadoc.

Vous ne devriez pas non plus utiliser Long.parseLong() si votre objectif est de convertir la décimale en une autre base. Vous devez transmettre la ligne d'origine à votre méthode de conversion.