[ Foro de Java ]

Sobre ficheros Java

17-Jan-2021 13:04
Invitado (Gabi)
3 Respuestas

Estoy aprendiendo a utilizar ficheros pero no entiendo por qué me salta error con este código:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Problema2 {
public static void main(String[] args) {
File fichero = BuscarFichero()

public static File BuscarFichero() {
boolean localizado = false;
while(!localizado) {
try {
Scanner input = new Scanner(System.in);
System.out.println("Introduce nombre del fichero");
File ficher = new File(input.next());
return ficher;
localizado = true;
} catch(Exception er){
System.out.println("No se localizó el fichero");
}

}
}


17-Jan-2021 19:35
Nacho Cabanes (+84)

¿Qué error y en qué linea?  Si ese es todo el programa, no has cerrado Main. Si no, cambias el valor de localizado después de un "return", por lo que no cambiará.


17-Jan-2021 21:07
Invitado (Gabi)

Tienes razón, está mal eso. Aquí está corregido pero sigue apareciendo error en la línea ''public static File Buscar fichero...''

package practica7;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Problema2 {
public static void main(String[] args) {
File fichero = BuscarFichero();


}

public static File BuscarFichero() {
boolean localizado = false;
while(!localizado) {
try {
Scanner input = new Scanner(System.in);
System.out.println("Introduce nombre del fichero");
File ficher = new File(input.next());
localizado = true;
return ficher;


} catch(Exception er){
System.out.println("No se localizó el fichero");
}

}
}
}
-----------------------------------------------------
El error me dice que la función debe retornar un valor de tipo File, pero ¿no es lo que ya hago con el objeto fich??
Cuando lo intento corregir Java me hace otro return pero con un valor de null de clase File.... pero yo quiero que retorne el fichero... una función puede devolver un fichero? por qué si no no me explico por qué no me deja Java


18-Jan-2021 11:28
Nacho Cabanes (+84)

Sólo lo retornas dentro de "try", y debes devolverlo en cualquier caso. Deberías declarar "ficher" al principio de la función, con valor predefinido "null", y devolverlo al final de la función, porque tu caso del catch no devuelve nada.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)