Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 12.1 — Leitura e Escrita Moderna com java.nio.file.Files e Path

Contexto: Leitura e Escrita Moderna com java.nio.file.Files e Path no contexto de Manipulação de Arquivos e Streams I/O (java.io e java.nio.file).

Requisitos de Execução:

  1. Gravar e ler strings com Files.writeString(path, texto) e Files.readString(path) no Java 21.

Resultado Esperado

Operações I/O executadas com API moderna de NIO.2.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_12_1_SeuNome
  2. Envie na tarefa: Atividade Cap 12 - Manipulação de Arquivos e Streams I/O (java.io e java.nio.file)
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

import java.nio.file.Files;
import java.nio.file.Path;

public class NioDemo {
    public static void main(String[] args) throws Exception {
        Path p = Path.of("audit.log");
        Files.writeString(p, "AUDITORIA: Java Systems 100%\n");
        String lido = Files.readString(p);
        System.out.print("Conteudo: " + lido);
    }
}

🔍 Nível 2: Prática

Problema 12.2 — Leitura Eficiente em Stream com Files.lines() e Filtros

Contexto: Leitura Eficiente em Stream com Files.lines() e Filtros no contexto de Manipulação de Arquivos e Streams I/O (java.io e java.nio.file).

Requisitos de Execução:

  1. Processar arquivo de log massivo utilizando Files.lines(path) filtrando linhas com Stream API.

Resultado Esperado

Arquivo processado sob demanda sem carregar o arquivo inteiro na memória Heap.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_12_2_SeuNome
  2. Envie na tarefa: Atividade Cap 12 - Manipulação de Arquivos e Streams I/O (java.io e java.nio.file)
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

import java.nio.file.Files;
import java.nio.file.Path;

public class StreamFilesDemo {
    public static void main(String[] args) throws Exception {
        Path p = Path.of("audit.log");
        long totalErros = Files.lines(p).filter(l -> l.contains("ERRO")).count();
        System.out.println("Total de erros: " + totalErros);
    }
}

⚡ Nível 3: Integração

Problema 12.3 — Serialização Binária de Objetos com ObjectOutputStream

Contexto: Serialização Binária de Objetos com ObjectOutputStream no contexto de Manipulação de Arquivos e Streams I/O (java.io e java.nio.file).

Requisitos de Execução:

  1. Gravar e recuperar objeto serializável em arquivo binário .ser.

Resultado Esperado

Objeto persistido e reconstituído em binário nativo.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_12_3_SeuNome
  2. Envie na tarefa: Atividade Cap 12 - Manipulação de Arquivos e Streams I/O (java.io e java.nio.file)
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

import java.io.*;

public class SerializacaoDemo {
    record Config(String host, int porta) implements Serializable {}

    public static void main(String[] args) throws Exception {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        new ObjectOutputStream(baos).writeObject(new Config("localhost", 8080));
        System.out.println("Bytes serializados: " + baos.size());
    }
}

🏆 Nível 4: Desafio Corporativo

Problema 12.4 — Monitoramento de Diretórios com WatchService API

Contexto: Monitoramento de Diretórios com WatchService API no contexto de Manipulação de Arquivos e Streams I/O (java.io e java.nio.file).

Requisitos de Execução:

  1. Registrar listener assíncrono para detectar criação e mutação de arquivos em pasta de logs.

Resultado Esperado

WatchService detectando eventos de sistema de arquivos em tempo real.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_12_4_SeuNome
  2. Envie na tarefa: Atividade Cap 12 - Manipulação de Arquivos e Streams I/O (java.io e java.nio.file)
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

import java.nio.file.*;

public class WatchServiceDemo {
    public static void main(String[] args) throws Exception {
        WatchService watcher = FileSystems.getDefault().newWatchService();
        System.out.println("WatchService registrado para monitoramento.");
    }
}

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos