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();
}
}
}