Introdução
Neste projeto, você aprenderá como mesclar múltiplos arquivos de texto linha por linha, de forma alternada. Esta é uma tarefa comum no processamento de dados e gerenciamento de arquivos, onde pode ser necessário combinar o conteúdo de vários arquivos em um único arquivo.
🎯 Tarefas
Neste projeto, você aprenderá:
- Como preparar os arquivos de entrada necessários para o processo de mesclagem de arquivos
- Como implementar uma função para mesclar o conteúdo dos arquivos de entrada
- Como executar o processo de mesclagem de arquivos e verificar a saída
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Trabalhar com operações de I/O de arquivos em Java, incluindo leitura e escrita de arquivos
- Usar as classes de arquivo e stream embutidas do Java para lidar com operações de arquivo
- Implementar um algoritmo de mesclagem de arquivos personalizado para combinar o conteúdo de múltiplos arquivos
- Testar e verificar a correção do processo de mesclagem de arquivos
Implementar a Função de Mesclagem
Nesta etapa, você implementará a função merge para mesclar o conteúdo dos arquivos de entrada.
Abra o arquivo
FileMerge.javano diretório/home/labex/project.Localize a função
mergee substitua o código existente pela seguinte implementação:
public static void merge(String[] sourcePath, String outPath) throws IOException {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(outPath))) {
BufferedReader[] readers = new BufferedReader[sourcePath.length];
String[] currentLines = new String[sourcePath.length];
boolean[] fileEmpty = new boolean[sourcePath.length];
// Open readers for each source file
for (int i = 0; i < sourcePath.length; i++) {
readers[i] = new BufferedReader(new FileReader(sourcePath[i]));
currentLines[i] = readers[i].readLine();
fileEmpty[i] = (currentLines[i] == null);
}
// Merge lines from each file
boolean allFilesEmpty = false;
while (!allFilesEmpty) {
allFilesEmpty = true;
for (int i = 0; i < sourcePath.length; i++) {
if (!fileEmpty[i]) {
writer.write(currentLines[i]);
writer.newLine();
currentLines[i] = readers[i].readLine();
fileEmpty[i] = (currentLines[i] == null);
allFilesEmpty = false;
}
}
}
// Close readers
for (BufferedReader reader : readers) {
reader.close();
}
}
}
Esta implementação abre um BufferedReader para cada arquivo de entrada, lê as linhas de cada arquivo e escreve as linhas no arquivo de saída de forma alternada. Se um arquivo não tiver mais linhas, ele é ignorado até que todas as linhas de todos os arquivos tenham sido escritas no arquivo de saída.
Executar o Processo de Mesclagem de Arquivos
Nesta etapa, você executará o processo de mesclagem de arquivos e verificará a saída.
Abra o arquivo
FileMerge.javano diretório/home/labex/project.Localize a função
maine certifique-se de que o arraystrscontenha os nomes dos arquivos de entrada:"1.txt","2.txt", e"3.txt".Execute a classe
FileMergeexecutando o seguinte comando no terminal:
javac FileMerge.java
java FileMerge
Após a execução bem-sucedida do programa, um novo arquivo chamado
0.txtserá criado no diretório/home/labex/project. Este arquivo conterá o conteúdo mesclado dos arquivos de entrada.Abra o arquivo
0.txte verifique se o conteúdo corresponde à saída esperada:
1
6
7
2
8
3
9
4
5
Parabéns! Você concluiu com sucesso o projeto de mesclagem de arquivos.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



