Manipulação de Arquivos em JAVA

Preciso de ajuda nessa atividade!

  1. Implemente dois métodos cujas as assinaturas são apresentadas abaixo: um chamado
    reader, que exibe o conteúdo de um arquivo texto, e outro chamado writer, que escreve em um arquivo algum texto que for informado pelo usuário, via teclado. Ambos os métodos recebem como parâmetro uma string com o nome/caminho (path) do arquivo a ser lido e/ou escrito. Utilize o método main (programa principal) para testar os métodos criados. As exceções lançadas pelos métodos devem ser tratadas. As assinaturas dos métodos não devem ser modificadas.
public void reader(String path) throws IOException { 

}

public void writer(String path) throws IOException {

}

E estou tendo este erro:

Segue meu código:

Main

import java.io.IOException;

public class Main {
  
  public static void main(String[] args) throws IOException {
    Implementacao im = new Implementacao();
    im.writer("textTest.txt");
    im.reader("textTest.txt");
  }
}

ManipulaArquivos

import java.io.IOException;

public interface ManipulaArquivos {
  public void reader(String path) throws IOException{};
  public void writer(String path) throws IOException{};
}

Implementacao

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;

class Implementacao implements ManipulaArquivos {
  
  private static final Scanner scan = new Scanner(System.in);

  public void reader(String path) throws IOException {
    byte[] content = Files.readAllBytes(Paths.get(path));
    String str = new String(content);
    System.out.println(str);
  };
  
  public void writer(String path) throws IOException {
    System.out.print("Digite alguma coisa: ");
    String content = scan.nextLine();
    Files.write(Paths.get(path), content.getBytes());
  };
}

Vc não pode ter métodos com corpo numa interface. O certo é assim:

import java.io.IOException;

public interface ManipulaArquivos {
  void reader(String path) throws IOException;
  void writer(String path) throws IOException;
}

Na maioria dos casos “normais”, de fato não. Mas só como curiosidade, a partir do Java 8 uma interface pode ter métodos estáticos e default, que têm corpo: https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

Mas claro que no caso desse exercício, isso não é necessário. O mais comum de uma interface é ter métodos sem corpo mesmo…

2 curtidas