leer archivo

Iniciado por m@o_614, 23 Junio 2014, 00:10 AM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

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 (java) [Seleccionar]
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Token {

public static void main(String[] args) {
String nombre;
Scanner teclado = new Scanner(System.in);
System.out.print("Dame el nombre del archivo: ");
nombre = teclado.nextLine();
teclado.close();
leerArchivo(nombre);
}

public static void leerArchivo(String nombre)
{
try
{
int car;
    File archivo = new File(nombre);
    FileReader fr = new FileReader(archivo);
    while((car = fr.read()) != -1)
       System.out.printf("%d",car);
}
catch(FileNotFoundException fileNotFoundException)
{
System.out.println("No se pudo abrir archivo");
}
}

}
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

egyware

CitarThe 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!

~ Yoya ~

Cita de: m@o_614 en 23 Junio 2014, 00:10 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.



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.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

m@o_614

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

~ Yoya ~

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.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.