Скачиваний:
7
Добавлен:
09.04.2023
Размер:
40.49 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет Инфокоммуникационных сетей и систем

Кафедра Защищенных систем связи

Дисциплина Разработка защищенного программного обеспечения

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №8

Обработка текстовых файлов

(тема отчета)

Направление/специальность подготовки

10.03.01 Информационная безопасность

(код и наименование направления/специальности)

Студент:

(Ф.И.О., № группы) (подпись)

Преподаватель:

Цветков А.Ю.

(Ф.И.О) (подпись)

Цель лабораторной работы

  1. Освоить работу с текстовыми файлами с использованием средств Java

Используемое программное обеспечение

  1. JDK 1.5 и выше.

  2. Интегрированная среда разработки на Java.

Задание на лабораторную работу

  1. Написать программу, которая выполняет указанные в задании действия над файлом и записывает результат в другой файл

Адреса файлов подаются программе в виде аргументов:

  • args[0] - адрес файла для чтения исходного текста

  • args[1] - адрес файла для записи результата

  1. Проверить правильность работы программы

  2. Собрать исполняемый jar и отправить на проверку

Основное задание:

  • Клонировать слова, если в них содержится символ 'к' в верхнем или нижнем регистре (Пример: символ 'в'. "Во_дворе_стоит_дом" => "ВоВо_дворедворе_стоит_дом")

  • Инвертировать весь текст (Дом_стоит_во_дворе => еровд_ов_тиотс_моД)

Листинг программного кода основного задания

import java.io.*;

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) throws Exception {

        FileReader fileReader = null;

        FileWriter fileWriter = null;

        String filetoread = args[0];

        String filetowrite = args[1];

        try {

            // У FileReader есть конструктор, принимающий адрес

            // файла, который необходимо читать

            fileReader = new FileReader(filetoread);

            // *Тут работаем с файлом*

           

            int x = 0;

            StringBuilder word = new StringBuilder();

            char symbol;

            ArrayList<String> line = new ArrayList<String>();

            //Считываем файл до его конца и добавляем слова в лист

            while((x = fileReader.read()) != -1) {

                if ((char) x != '_'){

                    symbol = (char) x;

                    word.append(symbol);

                } else {

                    line.add(word.toString());

                    word.setLength(0);

                }

            }

            line.add(word.toString());

            StringBuilder output = new StringBuilder();

           

            // Проверяем слова на наличие к, дублируем их, если к есть и добавляем к строке, разделяя _

            for (int i = 0; i < line.size(); i++){

                output.append(line.get(i));

                if (line.get(i).contains("к") | line.get(i).contains("К")){

                    output.append(line.get(i));

                }

                output.append("_");

            }

            output.deleteCharAt(output.length() - 1);

           

            //Реверсируем получившуюся строку

            output.reverse();

           

            //Записываем в файл

            fileWriter = new FileWriter(filetowrite);

            fileWriter.write(output.toString());

            fileWriter.close();

            } catch (FileNotFoundException e) {

            // Указанный файл не найден или произошла ошибка доступа

            // (например, нет прав на чтение)

            e.printStackTrace();

            } catch (IOException e) {

            // Произошла общая ошибка ввода-вывода

            // (например, попытались прочесть больше, чем возможно)

            e.printStackTrace();

            } finally {

            // FileReader должен быть закрыт в любом случае

            if (fileReader != null) {

                try {

                    // Закрытие тоже может сгенерировать исключение

                    fileReader.close();

                } catch (IOException e) {}

            }

        }

    }  

}

Вариант дополнительного задания

  • Клонировать слова, если в них содержится символ 'к' в верхнем или нижнем регистре (Пример: символ 'в'. "Во_дворе_стоит_дом" => "ВоВо_дворедворе_стоит_дом")

  • Инвертировать весь текст (Дом_стоит_во_дворе => еровд_ов_тиотс_моД)

  • Клонировать слова, если в них содержится символ 'л' в верхнем или нижнем регистре (Пример: символ 'в'. "Во_дворе_стоит_дом" => "ВоВо_дворедворе_стоит_дом")

Листинг программного кода дополнительного задания

import java.io.*;

import java.util.ArrayList;

public class Dop {

    public static void main(String[] args) throws Exception {

        FileReader fileReader = null;

        FileWriter fileWriter = null;

        String filetoread = args[0];

        String filetowrite = args[1];

        try {

            // У FileReader есть конструктор, принимающий адрес

            // файла, который необходимо читать

            fileReader = new FileReader(filetoread);

            // *Тут работаем с файлом*

           

            int x = 0;

            StringBuilder word = new StringBuilder();

            char symbol;

            ArrayList<String> line = new ArrayList<String>();

            boolean check = false;

            //Считываем файл до его конца и добавляем слова в лист

            while((x = fileReader.read()) != -1) {

                if ((char) x != '_'){

                    symbol = (char) x;

                    word.append(symbol);

                } else {

                    line.add(word.toString());

                    word.setLength(0);

                }

            }

            line.add(word.toString());

            StringBuilder output = new StringBuilder();

            // Проверяем и дублируем слова с к

            for (int i = 0; i < line.size(); i++){

                if (line.get(i).contains("к") | line.get(i).contains("К")){

                    String tmp = line.get(i);

                    tmp = tmp + tmp;

                    line.set(i, tmp);

                }

                // Проверяем и дублируем слова с л

                if (line.get(i).contains("л") | line.get(i).contains("Л")){

                    String tmp = line.get(i);

                    tmp = tmp + tmp;

                    line.set(i, tmp);

                }

            }

            // Объединяем все слова из листа в строку, разделяя их _

            for (int i = 0; i < line.size(); i++){

                output.append(line.get(i)).append("_");

            }

            output.deleteCharAt(output.length() - 1);

           

            //Реверсируем получившуюся строку

            output.reverse();

           

            //Записываем в файл

            fileWriter = new FileWriter(filetowrite);

            fileWriter.write(output.toString());

            fileWriter.close();

            } catch (FileNotFoundException e) {

            // Указанный файл не найден или произошла ошибка доступа

            // (например, нет прав на чтение)

            e.printStackTrace();

            } catch (IOException e) {

            // Произошла общая ошибка ввода-вывода

            // (например, попытались прочесть больше, чем возможно)

            e.printStackTrace();

            } finally {

            // FileReader должен быть закрыт в любом случае

            if (fileReader != null) {

                try {

                    // Закрытие тоже может сгенерировать исключение

                    fileReader.close();

                } catch (IOException e) {}

            }

        }

    }  

}

Вывод

Изучены основные средства для работы с текстовыми файлами в языке Java из пакета java.io, представляющие собой потоки ввода-вывода

Санкт-Петербург

2021

Соседние файлы в предмете Разработка защищенного программного обеспечения