Bom, acabei fazendo na marra mesmo, e deu certo. rs
eu fiz assim… gravei o caminho dos arquivos que foram abertos em um vetor, e caso eu já o tenha aberto antes, ele não repete no vetor… quando eu fecho o Jframe, eu deleto os arquivos guardados no vetor.
Eu achei legal e funcionou direitinho.
Se alguém precisar… :
o contador e o vetor devem ser declarados no inicio da classe:
public class testeAnexo extends javax.swing.JFrame{
int countFiles;
String[] files = new String[999];
}
esse é o código do botão que vai abrir o arquivo.
[code]
String fileAtual = "";
String fileAtualVetor = "";
if ("".equals(txtanexo.getText())) {
JOptionPane.showMessageDialog(null, "Não existe anexo!", "OPS!", JOptionPane.WARNING_MESSAGE);
} else {
File file = new File("C:\\ Arquivo Temporario - "+ codigo +" " + extensaofile); //Criamos um nome para o arquivo com o codigo do registro
//este for() é para verificar se já existe este arquivo no vetor
for (int i = 0; i <= countFiles; i++) {
//se o vetor ainda não foi preenchido, ou seja, se for o primeiro índice,
//eu adiciono o primeiro file no vetor e somo o contador de files(que é o índice do vetor) e quebro o for()
if (files[0] == null) {
files[0] = file.toString();
countFiles++;
break;
} else {
fileAtual = file.toString(); //atribuo o file atual à variável
fileAtualVetor = files[i]; // atribuo o file i do vetor à varivel
//se a posição atual no vetor estiver vazia,
//atribui-se vazio em string, para que não dê erro na comparação em seguida
if (fileAtualVetor == null) {
fileAtualVetor = "";
}
// se o arquivo atual que está no vetor for igual ao file que está sendo aberto no momento,
//quebra o laço, pois se inserir um file igual a um existente no vetor, dará erro na hora de excluir.
if (fileAtualVetor.equals(fileAtual)) {
break;
// depois de todas as comparações para verificar se o arquivo já não foi aberto e inserido no vetor,
// se não tiver sido inserido e for a ultima posição do vetor, insere-se o arquivo no vetor
} else if (i == countFiles) {
files[countFiles] = file.toString();
countFiles++;
break;
}
}
}
//esta parte cria o arquivo
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(new FileOutputStream(file)); //Criamos o arquivo
bos.write(anexo); //Gravamos os bytes lá
bos.close(); //Fechamos o stream.
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, "Arquivo não encontrado", "OPS!", JOptionPane.WARNING_MESSAGE);
}
try {
Desktop.getDesktop().open(file); // abre o arquivo
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Erro no Desktop: " + ex);
}
}[/code]
e agora é só deletar na hora de fechar o Jframe:
[code]
for (int i = 0; i < countFiles; i++) {
File fileexclusao = new File(files[i]);
fileexclusao.delete();
}[/code]
Espero ter ajudado alguém, e a quem me ajudou, valeu!