Ajuda para resolver 2 problemas (salvar arquivo usando caminho relativo e remover arquivo)

2 respostas
ezequiellorenzatti

Só consigo salvar o arquivo informando o caminho absoluto, ainda não entendi como salvar usando o caminho relativo com\sistema\abs\imagens\upload\, outro problema que acontece é na hora de remover o arquivo, que não está acontecendo.

package com.sistema.abs.servico;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.List;

import com.sistema.abs.modelo.ArquivoVO;

public class GerenciadorArquivos {
	
	public String caminho = "C:\\Devel\\Tomcat6\\webapps\\sistema\\WebContent\\com\\sistema\\abs\\imagens\\upload\\";

	public GerenciadorArquivos() { }

	public void salvarArquivo(String nomeDoArquivo, byte[] conteudoDoArquivo) throws Exception {
		nomeDoArquivo = caminho + nomeDoArquivo;
		File arquivo = new File(nomeDoArquivo);
		FileOutputStream streamDeDados = new FileOutputStream(arquivo);
		streamDeDados.write(conteudoDoArquivo);
		streamDeDados.close();
	}
	
	public List<ArquivoVO> listarArquivos() throws Exception{
		File pasta = new File(caminho);
		String[] arquivos = pasta.list();
		List<ArquivoVO> listaDeArquivos = new ArrayList<ArquivoVO>();
		
		if (arquivos != null) {
			for (int i = 0; i < arquivos.length; i++) {
				listaDeArquivos.add( new ArquivoVO(arquivos[i], carregarConteudoDoArquivo(arquivos[i])) );
			}
		}
		return listaDeArquivos;
	}


	private byte[] carregarConteudoDoArquivo(String nomeDoArquivo) throws Exception{
		byte[] data = null;
		try {
			FileInputStream conteudoDoArquivo = new FileInputStream(caminho + nomeDoArquivo);
			FileChannel fc = conteudoDoArquivo.getChannel();
			data = new byte[(int) (fc.size())];
			ByteBuffer bb = ByteBuffer.wrap(data);
			fc.read(bb);
			return data;
		} catch (Exception e) {
			throw new Exception(e);
		}
	}
	
	public void removerArquivo(String nomeDoArquivo) throws Exception {
		File apagarArquivo = new File(caminho + nomeDoArquivo);  
		if(apagarArquivo.exists()){
			apagarArquivo.delete();
		}
	
	}
}

2 Respostas

nel

Tu não está informando o caminho do arquivo fixo, sendo que é um projeto Web né?
Não está me pegando ele do Tomcat, está? Diz que não…

Usa o “real-path” através do HttpRequest para localizar tuas apps colega.

ezequiellorenzatti

O projeto é só para estudos e sim, estou fazendo dessa forma, pelo simples fato de não saber usar de outra forma. (ainda estou aprendendo muita coisa)

Se você tiver como reescrever a classe ou me indicar um tutorial ajudaria muito.

Criado 14 de junho de 2012
Ultima resposta 14 de jun. de 2012
Respostas 2
Participantes 2