[SOLUCIONADO] Java - Guardar String en un array de URL[]

Iniciado por Paniic, 12 Abril 2015, 14:48 PM

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

Paniic

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 (java) [Seleccionar]


String urlsFile = "C:\\urls.txt";
String errorException = "Error de lectura en fichero"+urlsFile;
URL arrayList[];

  public void getURLfromTXTfile() {
       try {
           BufferedReader br = new BufferedReader(new FileReader(urlsFile));
           String line;
           Integer i = 0;
           while ((line = br.readLine())!=null){
               arrayList[i] = new URL[line];
               i++;
           }
           br.close();
       } catch (Exception e) {
           System.out.println(errorException);
       }

   }




Gracias de antemano.
\x31\xc9\x83\xe9\xee\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x5e\x10\xdb\x16\x83\xeb\xfc\xe2\xf4\x6f\xcb\x88\x55\x0d\x7a\xd9\x7c\x38\x48\x52\xf7\x93\x90\x48\x4f\xee\x2f\x16\x96\x17\x69\x22\x4d\x04\x78\xd1\x16\x5e\x89\xbd\x7e\x79\x1f\x98\x70\x0d\x99\x3a\xa6\x38\x40\x8a\x45\xd7\xf1\x98\xdb\xde\x42\xb3\x39\x71\x63\xb3\x7e\x71\x72\xb2\x78\xd7\xf3\x89\x45\xd7\xf1\x6b\x1d\x93\x90\xdb\x16

Usuario Invitado

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 (java) [Seleccionar]

public List<URL> getURLsFromFile(String directory, String fileName) throws IOException, IllegalAccessException {
      Path path = Paths.get(directory, fileName);
      Charset charset = Charset.forName("UTF-8");
      List<String> allLines = Files.readAllLines(path, charset);
      if(allLines == null || allLines.isEmpty()) {
        throw new IllegalAccessException("El archivo está vacío");
      }
      List<URL> urls = new ArrayList<>();
      for(String line : allLines) {
        urls.add(new URL(line));
      }
      return urls;
  }


Y lo llamarías así:

Código (java) [Seleccionar]

UrlHelper helper = new UrlHelper();
try {
    List<URL> urls = helper.getURLsFromFile("D://", "urls.txt");
    for(URL current : urls) {
        System.out.println(current);
    }
} catch(IOException | IllegalAccessException e) {
    System.err.println(e.getMessage());
}



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.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

Paniic

• 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 (java) [Seleccionar]
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.
\x31\xc9\x83\xe9\xee\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x5e\x10\xdb\x16\x83\xeb\xfc\xe2\xf4\x6f\xcb\x88\x55\x0d\x7a\xd9\x7c\x38\x48\x52\xf7\x93\x90\x48\x4f\xee\x2f\x16\x96\x17\x69\x22\x4d\x04\x78\xd1\x16\x5e\x89\xbd\x7e\x79\x1f\x98\x70\x0d\x99\x3a\xa6\x38\x40\x8a\x45\xd7\xf1\x98\xdb\xde\x42\xb3\x39\x71\x63\xb3\x7e\x71\x72\xb2\x78\xd7\xf3\x89\x45\xd7\xf1\x6b\x1d\x93\x90\xdb\x16

Usuario Invitado

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.

CitarMe indica que son tipos incompatibles debido a que necesita de javafx.scene.shape.Path y recibe un valor de java.nio.file.Path..
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

Paniic

Cita de: Gus Garsaky 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.


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.
\x31\xc9\x83\xe9\xee\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x5e\x10\xdb\x16\x83\xeb\xfc\xe2\xf4\x6f\xcb\x88\x55\x0d\x7a\xd9\x7c\x38\x48\x52\xf7\x93\x90\x48\x4f\xee\x2f\x16\x96\x17\x69\x22\x4d\x04\x78\xd1\x16\x5e\x89\xbd\x7e\x79\x1f\x98\x70\x0d\x99\x3a\xa6\x38\x40\x8a\x45\xd7\xf1\x98\xdb\xde\x42\xb3\x39\x71\x63\xb3\x7e\x71\x72\xb2\x78\xd7\xf3\x89\x45\xd7\xf1\x6b\x1d\x93\x90\xdb\x16