Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- //удалить ненужные импорты - Ctrl + Alt + O (это о, не ноль)
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.nio.file.StandardOpenOption;
- import java.util.ArrayList;
- import java.util.Scanner;
- class Main {
- public static void main(String[] args) throws IOException {
- //метод получения пути к файлу и проверка на его существование
- //ввод пока файл нормальный не будет введен
- //можешь путь держать как глобальную переменную, а можешь пробрасывать по функциям, как сам хочешь
- createMenu();
- }
- public static void createMenu() throws IOException {
- Scanner scanner = new Scanner(System.in);
- int choice;
- do {
- printMenu();
- choice = getMenuChoice();
- } while (choice != 0);
- scanner.close();
- }
- public static void printMenu() {
- //тут посмотри что IDE советует, классная вещь
- System.out.println("1. Добавить строку в файл\n" +
- "2. Удалить последнюю строку из файла\n" +
- "3. Вывести содержимое файла\n" +
- "4. Очистить файл\n" +
- "0. Конец программы");
- }
- public static int getMenuChoice() throws IOException {
- Scanner scanner = new Scanner(System.in);
- System.out.print("Ваш выбор: ");
- int choice = scanner.nextInt();
- switch (choice) {
- case (0) -> System.out.println(0); //удалить
- case (1) -> addLine();
- case (2) -> deleteLastLine();
- case (3) -> showWhatInside();
- case (4) -> removeAll();
- }
- return choice;
- }
- //разберись как менять true/false и используй только эту функцию
- //вынеси Reader тоже в такую функцию, чтобы кодстайл одинаковый был
- public static BufferedWriter createWriter() throws IOException {
- return new BufferedWriter(new FileWriter("Text.txt", true));
- }
- public static void addLine() throws IOException {
- Scanner sc = new Scanner(System.in);
- BufferedWriter buff = createWriter();
- System.out.println("Что будет хранится в этой строке: ");
- //говно название
- String usertext = sc.nextLine();
- buff.append(usertext);
- buff.newLine();
- buff.close();
- }
- public static void showWhatInside() throws IOException {
- //в метод
- BufferedReader reader = new BufferedReader(new FileReader("Text.txt"));
- //говно название, типо currentLine
- String c;
- //Выведи сообщение "Содержимое вашего файла:\n"
- while ((c = reader.readLine()) != null) {
- System.out.println(c);
- }
- //sout("\n")
- }
- public static void removeAll() throws IOException {
- //в метод
- //говно название
- BufferedWriter bufff = new BufferedWriter(new FileWriter("Text.txt", false));
- }
- public static void deleteLastLine() throws IOException {
- //зачем тут вызываешь??
- sumOfLines();
- //в метод
- BufferedReader reader = new BufferedReader(new FileReader("Text.txt"));
- ArrayList<String> lines = new ArrayList<>();
- int i = 0;
- try {
- while (i != sumOfLines()) {
- lines.add(reader.readLine());
- i++;
- }
- reader.close();
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- //почему бы просто не читать до i + 1 != sumOfLines(), чтобы не удалять ничего
- //плюс тут ошибка вылетает, если с пустым файлом вызвать
- lines.remove(lines.size() - 1);
- removeAll();
- //в метод
- BufferedWriter buff = new BufferedWriter(new FileWriter("Text.txt", true));
- for (String line : lines) {
- //посмотри что просят
- buff.append(line + "\n");
- }
- buff.close();
- }
- public static int sumOfLines() {
- //если тут переменная с названием, то и везде сделай
- String filePath = "Text.txt"; // путь к файлу
- //говно название, counter
- int count = 0; // счетчик строк
- //в метод
- try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
- //бесполезная переменная
- String line;
- while ((line = reader.readLine()) != null) {
- count++;
- }
- return count;
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement