Oi pessoal,
Eu fiz um algoritmo em Java capaz de fazer intercalação entre dois arquivos. Intercalar é misturar de maneira ordernada por uma chave. A classe ficou muito boa! Por enquanto só tem um método. Faz de uma maneira eficiente e economiza memória. Contudo, é importante que os dois arquivos de entrada estejam ordenados pela chave.
O método que faz isso é o
public static java.io.File merge(int charsBegin, int charsEnd,
java.io.File X, java.io.File Y, String path)
throws java.io.IOException
charsBegin - é o indíce onde começa a chave no arquivo.
charsEnd - é o indíce onde termina a chave no arquivo.
java.io.File X - é o objeto do arquivo 1,
java.io.File Y - é o objeto do arquivo 2,
String path - é o caminho aonde será criado o arquivo de saída. Lembre-se que é necessário por o nome do arquivo de saída no path. Veja no código como testei.
O algoritmo com um método main de teste está neste link http://paste.la/459 .
O método "merge" resolve qualquer caso de dois arquivos ordenados. Caso uma exceção de IO ocorra (IOException), ele a trata de maneira apropriada. Essa parte ficou muito legal.
O tratamento depende da fonte da exceção.
- Fonte é em um arquivo de entrada. O respectivo buffer é fechado e a escrita continua para o outro arquivo.
- Fonte é o arquivo de saída. Todos os buffers são fechados, vejam a nota, e a exceção de IO é propagada pelo método chamador para que este a trate da maneira que quiser.
Nota: Os buffers de leitura são fechados para que a Máquina Virtual Java(JVM) não se sobrecarregue com esse serviço. O buffer de escrita é fechado para que ocorra o flush. Em um programa em Java, C++ toda escrita que o programa faz fica na memória do computador até que o ponteiro do arquivo seja fechado ou seja dado flush. Assim, o que está na memória é limpo e escrito no H.D.
Nota: Depois vou criar o método kvias. Este fará intercalação entre N arquivos.
Passed in SCBCD 5 exam
Há 14 anos
Nenhum comentário:
Postar um comentário