Ajuda com array

11 respostas
S

Galera, é o seguinte. Estou fazendo um programa pra envio de email que tem possibilidade de enviar arquivos tb, até ai blz. Com um arquivo to conseguindo fazer tranquilo.

Só que eu quero poder anexar mais de um arquivo, portanto tenho que trabalhar com um array de Files, certo? Só que como eu nao sei quanto files o usuario pode entrar, então tenho que ter um array infinito de files, só que nao sei como fazer isso. Não to conseguindo fazer um metodo pra quando um arquivo for adicionado e o array for menor que o tamanho necessario, ele cria um novo array com uma posição a mais e coloca esse novo arquivo lá.

Deu pra entender o que estou precisando? Se der pra ajudar, já agradeço :slight_smile:

JFileChooser jfc = new JFileChooser(); int result = jfc.showOpenDialog(this); if(result == JFileChooser.CANCEL_OPTION) { return; } filename = jfc.getSelectedFile(); if(filename == null || filename.getName().equals("")) return; else{ totalArquivos++; lArq.setText("Um arquivo foi anexado"); Object arquivo = filename.getAbsolutePath(); comboArquivos.addItem(arquivo); }

Ai ta meu código, eu adicono o caminho desse arquivo em uma combobox. Se der pra ajudar, vlw.

11 Respostas

tubiluki

vc pode usar a interface List.

dai é só escolher uma implementação: ArrayList, LinkedList…

S

Não conheço, vou tar procurando, brigado.
Se alguém tiver mais ideia, vlw.

L

Utiliza um Vector pra armazenar os arquivos (Files)…

Vector vtArquivos = new Vector();

vtArquivos.addElement(file1);
vtArquivos.addElement(file2);
//onde file1 e file2 são objetos do tipo file
//ou pode armazenar somente o endereço

vtArquivos.addElement(endfile1); //armazena endereço da file
vtArquivos.addElement(endfile2);

Assim vc pode adicionar quandos “Files” prescisar…
Dá uma pesquisada no funcionamento do Vector…

Espero ter ajudado…

tubiluki

Melhor que Vector é usar ArrayList…

da uma olhada na documentação: http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html

S

Conseguir fazer uma lista eu consegui, o problema é que os arquivos que eu guardo lá dentro passam a ser um objeto, certo?
Não tendo mais a funcionalidad de File. Pq quando eu envio o anexo do email ele necessita ser uma classe File pra enviar, entende?

Ou eu estou fazendo o esquema de ArrayList errado.

JFileChooser jfc = new JFileChooser();
        int result = jfc.showOpenDialog(this);
        if(result == JFileChooser.CANCEL_OPTION) {
            return;
        }   
        filename = jfc.getSelectedFile();
        if(filename == null  || filename.getName().equals(""))
            return;
        else{
            totalArquivos++;
            lArq.setText("Um arquivo foi anexado");
            Object arquivo = filename.getAbsolutePath();
            comboArquivos.addItem(arquivo);
            lista.add(filename);//adidiconei esse lista.add
        }



        public static List lista = new ArrayList(); //fora do meu metodo que chama os files, eu declarei a lista como variavel global

O que estou fazendo de errado?

tubiluki

use genéricos… ou cast pra File…

genéricos é melhor…

List<File> lista = new ArrayList<File>();
S

consegui, funcionar o array list funcionou, o problema agora é com o esquema do email.
Peguei essa api hj e nao sei muito bem como funciona.

Usei este tutorial http://www.jguru.com/faq/view.jsp?EID=30251 para adicionar um arquivo, porém agora nao sei como adicionar mais arquivos =/

S

Ae, consegui! Enviando vários arquivos agora, brigadão galera.

Bom galera, aproveitando o tópico. É possível pegar o tamanho do arquivo? Creio que vai me retornar em byte, mas isso nao tem problema.

ViniGodoy

Só uma dica de postagem para quem ainda estiver perdido com o List:
http://www.guj.com.br/posts/list/74068.java#389435

S

MUITO bom usar o list, nossa. Brigado galera.
Agora só falta plotar o tamanho total de arquivos e ir implementando o programinha, é algo pra uso próprio, mas ajuda a aprender.

Brigado novamente.

S

Vini, não to conseguindo remover um item da lista dessa forma:

lista.remove(comboArquivos.getSelectedObjects());

Eu tenho uma combo do caminho dos arquivos, que são os mesmos itens que eu adiciono na lista, porém nao to conseguindo tira-los quando eu mando remover um arquivo.
Eu consigo limar a combo, mas tirar aquele item da lista, nao. =/
Tem ideia como posso fazer?

EDITED:

Consegui com getSelectedIndex(), porem tenho medo de que de algum problema se adicionar um arquivo, depois deletar, depois adicionar e assim por diante, será que nao da problema?

EDITED:
Puts, deu certo haha. Bom disculpa ficar editando, só pra ninguem ficar tendo que tentar ajudar
Valeu mesmo, ta ficando legal aqui.

Criado 2 de abril de 2008
Ultima resposta 2 de abr. de 2008
Respostas 11
Participantes 4