Foro de elhacker.net

Programación => Java => Mensaje iniciado por: m@o_614 en 23 Junio 2014, 00:10 am



Título: leer archivo
Publicado por: m@o_614 en 23 Junio 2014, 00:10 am
Saludos

Estoy aprendiendo los conceptos básicos de java, y he estado haciendo pequeños codigos como este que lo que hace es que le pide al usuario el nombre de un archivo que debe abrir y que una vez que este abierto debe leer caracter por caracter e imprimirlo

Código
  1. import java.io.File;
  2. import java.io.FileReader;
  3. import java.io.FileNotFoundException;
  4. import java.util.Scanner;
  5.  
  6. public class Token {
  7.  
  8. public static void main(String[] args) {
  9. String nombre;
  10. Scanner teclado = new Scanner(System.in);
  11. System.out.print("Dame el nombre del archivo: ");
  12. nombre = teclado.nextLine();
  13. teclado.close();
  14. leerArchivo(nombre);
  15. }
  16.  
  17. public static void leerArchivo(String nombre)
  18. {
  19. try
  20. {
  21. int car;
  22.    File archivo = new File(nombre);
  23.    FileReader fr = new FileReader(archivo);
  24.    while((car = fr.read()) != -1)
  25.       System.out.printf("%d",car);
  26. }
  27. catch(FileNotFoundException fileNotFoundException)
  28. {
  29. System.out.println("No se pudo abrir archivo");
  30. }
  31. }
  32.  
  33. }
  34.  
el problema es que me aparece un error en la linea que me tiene que imprimir los caracteres del archivo y no se por qué, me dice:

The method printf(String,Object[])in the type printStream is not applicable for the arguments (String, int),como puedo resolverlo??

gracias


Título: Re: leer archivo
Publicado por: egyware en 23 Junio 2014, 01:12 am
Citar
The method printf(String,Object[])in the type printStream is not applicable for the arguments (String, int)

Que raro deberia funcionarte, en fin mejor usa esto y no te compliques tanto.
println(""+car);

Saludos!


Título: Re: leer archivo
Publicado por: ~ Yoya ~ en 23 Junio 2014, 01:56 am
The method printf(String,Object[])in the type printStream is not applicable for the arguments (String, int),como puedo resolverlo??

Eso pasa porque estas utilizando  o le haz indicado que uses una versión de java menor o igual a 4. Si estas utilizando un IDE, verifica que la versión de compilación que estés ocupando sea igual o mayor a 5 (no confundas con la versión de JDK que esta utilizando el IDE), que es la versión que soporta AutoBoxing (http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html).


Aunque el parrafo de arriba soluciona el error, te dejo un pequeño resumen de lo que esta sucediendo.

Lo que pasa es que el segundo parámetro recibe un objeto, y le estas pasando int que es un valor primitivo no un objeto, y por lo tanto esta dando un error. A partir de Java 5, se introduce AutoBoxing y UnBoxing que hace conversión automática de primitivo a su Wrapper class (la versión en objeto del primitivo para que entiendas mas fácil) y viceversa.


Título: Re: leer archivo
Publicado por: m@o_614 en 23 Junio 2014, 20:36 pm
muchas gracias por sus respuestas, ahora el codigo funciona bien. Una última duda. cómo puedo verificar que la versión de compilación que uso es igual o mayor a 5??? estoy usando eclipse


Título: Re: leer archivo
Publicado por: ~ Yoya ~ en 24 Junio 2014, 01:52 am
Click derecho en el proyecto -> Properties - > Java Compiler

En esa ventana puedes ver la versión de compilación que utiliza el proyecto actual y definir una versión también.

Saludos.