Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Paniic en 12 Abril 2015, 14:48 pm



Título: [SOLUCIONADO] Java - Guardar String en un array de URL[]
Publicado por: Paniic en 12 Abril 2015, 14:48 pm
Quiero almacenar en un array de tipo URL, una linea obtenida de un fichero TXT, pero me devuelve error por ser tipos incompatibles. (Soy nuevo en esto del POO)

El error salta en la linea 12.


Código
  1.  
  2. String urlsFile = "C:\\urls.txt";
  3. String errorException = "Error de lectura en fichero"+urlsFile;
  4. URL arrayList[];
  5.  
  6.   public void getURLfromTXTfile() {
  7.        try {
  8.            BufferedReader br = new BufferedReader(new FileReader(urlsFile));
  9.            String line;
  10.            Integer i = 0;
  11.            while ((line = br.readLine())!=null){
  12.                arrayList[i] = new URL[line];
  13.                i++;
  14.            }
  15.            br.close();
  16.        } catch (Exception e) {
  17.            System.out.println(errorException);
  18.        }
  19.  
  20.    }



Gracias de antemano.


Título: Re: Java - Guardar String en un array de URL[]
Publicado por: Usuario Invitado en 12 Abril 2015, 16:02 pm
Hola,

Veo que no inicializas tu array arrayList que por cierto tiene un identificador malísimo. Una variable en Java debe describir su contenido. Si yo veo arrayList, ¿qué me dice eso?. Otra cosa, arrayList es una clase en Java.

Si no quieres un tamaño fijo, debes usar ArrayList:

Código
  1. public List<URL> getURLsFromFile(String directory, String fileName) throws IOException, IllegalAccessException {
  2.      Path path = Paths.get(directory, fileName);
  3.      Charset charset = Charset.forName("UTF-8");
  4.      List<String> allLines = Files.readAllLines(path, charset);
  5.      if(allLines == null || allLines.isEmpty()) {
  6.        throw new IllegalAccessException("El archivo está vacío");
  7.      }
  8.      List<URL> urls = new ArrayList<>();
  9.      for(String line : allLines) {
  10.        urls.add(new URL(line));
  11.      }
  12.      return urls;
  13.  }

Y lo llamarías así:

Código
  1. UrlHelper helper = new UrlHelper();
  2. try {
  3.    List<URL> urls = helper.getURLsFromFile("D://", "urls.txt");
  4.    for(URL current : urls) {
  5.        System.out.println(current);
  6.    }
  7.    System.err.println(e.getMessage());
  8. }


En caso el fichero estuviera vacío, se lanza un IllegalAccessException con el mensage "El archivo está vacío", para que se pueda apreciar la causa exacta del problema. Es importante el manejo de excepciones, no olvidarlo.


Saludos.


Título: Re: Java - Guardar String en un array de URL[]
Publicado por: Paniic en 12 Abril 2015, 16:39 pm
• En primer lugar muchas gracias, pues me solucionaste un error de antes al indicarme que no lo había inicializado, y por tomarte tiempo en la respuesta

Respecto al identificador del arrayList, suelo cambiarles los nombres para concretar al final, pero si es cierto que debo corregirlo y nombrarlos correctamente desde el principio.

• En segundo lugar, usando tu código me surge un único problema (antes de intentarlo con arrays también lo intenté con un arrayList).

Código
  1. Path path = Paths.get(directory,fileName);

Me indica que son tipos incompatibles debido a que necesita de javafx.scene.shape.Path y recibe un valor de java.nio.file.Path..


• En ultimo lugar, es un programa corto y de prueba para mi y para aprender Java, por ello uso Exception en lugar de excepciones específicas, que como dices, ayudan a identificar mucho antes un problema.

Gracias.


Título: Re: Java - Guardar String en un array de URL[]
Publicado por: Usuario Invitado en 12 Abril 2015, 16:43 pm
Estás importando javafx.scene.shape.Path en lugar de java.nio.file.Path. Fíjate siempre es los mensajes que te dice el compilador.

Citar
Me indica que son tipos incompatibles debido a que necesita de javafx.scene.shape.Path y recibe un valor de java.nio.file.Path..


Título: Re: [SOLUCIONADO] Java - Guardar String en un array de URL[]
Publicado por: Paniic en 12 Abril 2015, 16:53 pm
Estás importando javafx.scene.shape.Path en lugar de java.nio.file.Path. Fíjate siempre es los mensajes que te dice el compilador.


Perdón -.-
Intenté usar java.nio.file.Path pero el auto-import de Maven no me cogía ese paquete.

Metiéndoselo a mano me lo cogió ya.

Muchas gracias Gus.