Barra de progresso total!

3 respostas
rafaelt

Eh o seguinte galera, uso o metodo abaixo para abrir um ou mais arquivos:

public void openFile()
    {
    	File[] files = fc.getSelectedFiles();
		
		for(int i = 0; i < files.length; i++)
		{
			arquivos.add(files[i]);
			fileName = files[i].getName();
			fileSize = files[i].length();
			int num = arquivos.size();
			if(fileName.indexOf(".mov") != -1)
			{
				log.append("Arquivo #"+num+": "+fileName+" -- Tamanho: "+fileSize+" bytes." + newline);
			}
			
			else
            {
            	JOptionPane.showMessageDialog(null, "A extensão do arquivo deve ser \".mov\".", "Atenção", JOptionPane.WARNING_MESSAGE);
            	arquivos.clear();
            }
		}

		ite = arquivos.iterator();
		//log.append("Teste: "+ite+"" + newline);
    }

E no codigo abaixo para enviar um arquivo para um seguinte diretorio:

public void sendFile()
	{	
		try
		{
			while(ite.hasNext())
			{
				File file = (File) ite.next();
				fileUpload = "/"+file.getName()+"/";
				output = filePath + fileUpload;
				InputStream in = new FileInputStream(file);
				OutputStream out = new FileOutputStream(output);	      
				bytesUploaded = 0;
				byte[] buffer = new byte[100000];
				int percVal = 0;
				
				//log.append("Enviando: " + file.getName() + newline + newline);
								
				while((tamanho = in.read(buffer)) >= 0)
				{
					bytesUploaded += tamanho;
					percVal = (int) ((bytesUploaded / fileSize) * 100);
					currentFileUpPercent = percVal;
					barra.setValue(currentFileUpPercent);
					out.write(buffer, 0, tamanho);
				}
								
				in.close(); 
				out.close();
				log.append("Arquivo enviado com sucesso: " + file.getName() + newline + newline);					
				barra.setValue(0);
			}
		}
					
		catch(Exception e)
		{
			log.append("Erro ao enviar o arquivo: " + newline + e.getMessage());
			log.invalidate();
		}
	}

Gostaria de saber, como faco para que minha barra mostre o progresso total do envio dos arquivos selecionados e nao um por um…

Alguma dica???

Abracos!!!
Rafael

3 Respostas

rafaelt

Fala ae galera to recussitando pra ver se alguem pode me ajudar, ainda naum consigo fazer isso funfar :frowning:

abracos,
Rafael

jcatino

Se entendi direito, no seu método sendFile, vc deveria percorrer primeiro o Iterator e acumulando o tamanho num long que receba todos os tamanhos de arquivos, algo como:

long tamanhoTotal = 0L;

while(ite.hasNext()){
    File readingFile = (File) ite.next();
    tamanhoTotal += readingFile.length();
}

…e depois atribuir esse tamanho ao ProgressBar, e continuar a sendFile atual :slight_smile:

rafaelt

cara não funcionou, ele me dar o tamanho do arquivo, num sei pq mais dá. :frowning:

alguma outra sugestão???
abraços!!!

Criado 17 de novembro de 2006
Ultima resposta 23 de nov. de 2006
Respostas 3
Participantes 2