Bom dia galera, me deparei com uma tarefa que no início achei simples mas está me dando um pouco de dor de cabeça.
Preciso completar o espaço livre de um disco (Ex. Uma partição de um Pen Drive, uma Partição do HD) mas preciso realizar isso da forma mais rápida possível.
A solução que encontrei foi a seguinte:
Como preciso ocupar o espaço livre de um disco pensei em criar um arquivo do tamanho do espaço livre. Chamo isso de POG mas tudo bem... rsrsrsr
Sendo assim criei essa classe.
package teste;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class CompletarEspacoLivre {
public CompletarEspacoLivre(File arquivoDestino, int espacoLivre) throws IOException {
//Recebo como parâmetro do construtor o caminho + o nome do arquivo que será gerado e
// o espaço livre do disco que será usado como base para a criação do arquivo.
if (arquivoDestino.exists())
arquivoDestino.delete();
FileChannel destinationChannel = null;
ByteBuffer bytes = ByteBuffer.allocate(espacoLivre);
//Crio o ByteBuffer alocando o tamanho do espaço livre do disco
try {
destinationChannel = new FileOutputStream(arquivoDestino).getChannel();
destinationChannel.write(bytes);
//E finalmente escrevo o arquivo com a quantidade de bytes necessária
} finally {
if (destinationChannel != null && destinationChannel.isOpen())
destinationChannel.close();
}
}
}
Funciona perfeitamente (Aparentemente), no entanto gostaria de saber se esta forma seria a melhor solução para preencher o espaço livre de um disco mantendo uma boa performance.
Desde já agradeço a atenção!
Abraços!
