Boa tardepessoal!
Seguinte, criei um código de teste para gerar um backup do meu banco de dados (mysql), gerar um zip do arquivo de backup e depois de gerado o zip quero deletar o arquivo original por ele gerado (.sql).
O erro é que quando eu executo o método .delete() do arquivo o sistema diz que não consegue achar o arquivo, mas o mesmo está lá, ele existe sim e o caminho está correto.
Suspeito eu que deva ser por que eu não estou fechando os Streams utilizados para realizar o procedimento completo.
Não reparem o código não, é que eu fiz meio que montando de acordo com um tutorial daqui do fórum mas prometo que depois vou arrumar o código, tratar as exceptions etc.
Lá vai:
public static final int TAMANHO_BUFFER = 2048;
/**
* @param args
* @throws ParseException
* @throws IOException
*/
public static void main(String[] args) throws ParseException, IOException {
StringBuilder fileName = getFileName();
File diretorio = new File("C:\\Backups");
File backupSqlFile = new File("C:\\Backups\\" + fileName);
if ( !diretorio.isDirectory() )
new File("C:\\Backups").mkdir();
try {
// Cria o backup
Runtime.getRuntime().exec("cmd /c mysqldump -u root --password=*** --databases db > " + backupSqlFile);
} catch (IOException e) {
e.printStackTrace();
}
FileOutputStream fos = new FileOutputStream(backupSqlFile.getAbsolutePath().replace(".sql", ".zip"));
BufferedOutputStream bos = new BufferedOutputStream(fos, TAMANHO_BUFFER);
ZipOutputStream zos = new ZipOutputStream(bos);
String caminhoEntradaZip = null;
int idx = backupSqlFile.getAbsolutePath().indexOf(backupSqlFile.getParent());
if ( idx >= 0 ) {
caminhoEntradaZip = backupSqlFile.getAbsolutePath().substring( idx + backupSqlFile.getParent().length() + 1 );
}
ZipEntry entry = new ZipEntry(caminhoEntradaZip);
zos.putNextEntry(entry);
zos.setMethod(ZipEntry.DEFLATED);
FileInputStream fis = new FileInputStream(backupSqlFile);
BufferedInputStream bis = new BufferedInputStream(fis, TAMANHO_BUFFER);
int bytesLidos = 0;
byte buffer[] = new byte[TAMANHO_BUFFER];
while ( ( bytesLidos = bis.read( buffer, 0, TAMANHO_BUFFER ) ) != -1 ) {
zos.write(buffer, 0, bytesLidos);
}
bis.close();
fis.close();
zos.close();
}
Vlw!!!