I felt a little like shooting in the dark on this task since we haven't been given an example of code to extract a file from a Zip yet. But I assumed the copyData method would be used for that. I googled a few options and it seemed they used code similar to copyData with a few other bits. I tried to combine them together as best I could. And I assumed my first guess would fail but I was hoping it would give me a clue as to how to proceed. It did not. So, I have no idea if I'm even on the right track with this. Take a look and let me know if I am at least close.
package com.codegym.task.task31.task3110;
import com.codegym.task.task31.task3110.exception.NoSuchZipFileException;
import java.io.IOException;
public class Archiver {
public static void main(String[] args) throws IOException {
Operation operation = null;
do {
try {
operation = askOperation();
CommandExecutor.execute(operation);
} catch (NoSuchZipFileException e) {
ConsoleHelper.writeMessage("You didn't select an archive or you selected an invalid file.");
} catch (Exception e) {
ConsoleHelper.writeMessage("An error occurred. Please check the entered data.");
}
} while (operation != Operation.EXIT);
}
public static Operation askOperation() throws IOException {
ConsoleHelper.writeMessage("");
ConsoleHelper.writeMessage("Select an operation:");
ConsoleHelper.writeMessage(String.format("\t %d - Zip files into an archive", Operation.CREATE.ordinal()));
ConsoleHelper.writeMessage(String.format("\t %d - Add a file to an archive", Operation.ADD.ordinal()));
ConsoleHelper.writeMessage(String.format("\t %d - Remove a file from an archive", Operation.REMOVE.ordinal()));
ConsoleHelper.writeMessage(String.format("\t %d - Extract an archive", Operation.EXTRACT.ordinal()));
ConsoleHelper.writeMessage(String.format("\t %d - View the contents of an archive", Operation.CONTENT.ordinal()));
ConsoleHelper.writeMessage(String.format("\t %d - Exit", Operation.EXIT.ordinal()));
return Operation.values()[ConsoleHelper.readInt()];
}
}