Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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 (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
Título: Re: leer archivo
Publicado por: egyware en 23 Junio 2014, 01:12 AM
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!
Título: Re: leer archivo
Publicado por: ~ Yoya ~ en 23 Junio 2014, 01:56 AM
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 (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.