Ler txt dropbox e passar para vector ou arraylist

1 resposta
J

Bom dia a todos.
Este é o meu primeiro tópico e venho já pedir a vossa ajuda para resolver um problema!

O que se passa é o seguinte, tenho um ficheiro guardado no dropbox e quero ler/passar para um vector ou arraylist (o que for mais aconselhado!).

Consigo ler o ficheiro e visualizar o conteúdo:
URL url = new URL("https://dl.dropboxusercontent.com/s/g9w6f3ewpwcbcca/registo.txt?token_hash=AAFhiipisYY8yXRuUHtW4M05qTbjSnqpuLdOlhLzSngZzA&dl=1");
        HttpURLConnection.setFollowRedirects(true);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setDoOutput(false);
        con.setReadTimeout(20000);
        con.setRequestProperty("Connection", "keep-alive");

        con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0");
        ((HttpURLConnection) con).setRequestMethod("GET");
        //System.out.println(con.getContentLength()) ;
        con.setConnectTimeout(5000);
        BufferedInputStream in = new BufferedInputStream(con.getInputStream());
        int responseCode = con.getResponseCode();
        if (responseCode == HttpURLConnection.HTTP_OK) {
            System.out.println(responseCode);
        }
        StringBuffer buffer = new StringBuffer();
        int chars_read;
        String inputline;
        //int total = 0;
        while ((chars_read = in.read()) != -1) 
        {
            char g = (char) chars_read;
            buffer.append(g);
        }
        final String page = buffer.toString();
Agora o que me interessava era passar para um vector ou arraylist mas em 2D. Com o seguinte código consigo passar para um vector mas o file tem de estar localmente:
BufferedReader reader = null;
        String line;
        Vector<String[]> v = new Vector<String[]>();
        try {       
            reader = new BufferedReader(new FileReader(new File("teste.txt")));
            while ((line = reader.readLine()) != null) {
                v.add(line.split(","));
            }          
            for(String[] s : v) {
                System.out.println("Antes: " + s[0] + " / Depois: " + s[1]);
            }

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                reader.close();
            } catch (IOException ex) {
            }
        }
O print é:

LT,111111
JB,444444
CMS,5555555
PM,AAAAAAA
JBA,c0c0c0c0
jm,0200212

Alguém me pode dar uma ajudinha?

Obrigado

1 Resposta

J

Consegui!

Aqui fica o código:

BufferedReader reader=null;
        String line;
        URL url = new URL("https://dl.dropboxusercontent.com/s/g9w6f3ewpwcbcca/registo.txt?token_hash=AAFhiipisYY8yXRuUHtW4M05qTbjSnqpuLdOlhLzSngZzA&dl=1");
        HttpURLConnection.setFollowRedirects(true);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setDoOutput(false);
        con.setReadTimeout(20000);
        con.setRequestProperty("Connection", "keep-alive");
        con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0");
        ((HttpURLConnection) con).setRequestMethod("GET");
        con.setConnectTimeout(5000);   
        reader = new BufferedReader(new InputStreamReader(url.openStream()));
        int responseCode = con.getResponseCode();
        if (responseCode == HttpURLConnection.HTTP_OK) {
            System.out.println(responseCode);
        }
        Vector<String[]> v = new Vector<String[]>();
        while ((line = reader.readLine()) != null) 
        {
            v.add(line.split(","));
        }

Para se obter o resultado:

System.out.println(v.get(0)[0]+"  "+v.get(0)[1]);
Criado 6 de setembro de 2013
Ultima resposta 6 de set. de 2013
Respostas 1
Participantes 1