Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.task.task18.task1828;
- /*
- CrUD для таблицы внутри файла
- Считать с консоли имя файла для операций CrUD
- Программа запускается с одним из следующих наборов параметров:
- -u id productName price quantity
- -d id
- Значения параметров:
- где id - 8 символов
- productName - название товара, 30 символов
- price - цена, 8 символов
- quantity - количество, 4 символа
- -u - обновляет данные товара с заданным id
- -d - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)
- В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
- id productName price quantity
- Данные дополнены пробелами до их длины
- Пример:
- 19847 Шорты пляжные синие 159.00 12
- 198479 Шорты пляжные черные с рисунко173.00 17
- 19847983Куртка для сноубордистов, разм10173.991234
- Требования:
- 1. Программа должна считать имя файла для операций CrUD с консоли.
- 2. При запуске программы без параметров список товаров должен остаться неизменным.
- 3. При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле.
- 4. При запуске программы с параметрами "-d id" строка товара с заданным id должна быть удалена из файла.
- 5. Созданные для файлов потоки должны быть закрыты.
- */
- import java.io.*;
- import java.util.ArrayList;
- public class Solution {
- public static void main(String[] args) throws Exception {
- if (args.length != 0) {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- String fileName = reader.readLine();
- reader.close();
- reader = new BufferedReader(new FileReader(fileName));
- ArrayList<String> fileData = new ArrayList<>();
- String line;
- while ((line = reader.readLine()) != null) {
- if (!line.isEmpty()) {
- fileData.add(line);
- }
- }
- reader.close();
- if ("-u".equals(args[0])) {
- for (int i = 0; i < fileData.size(); i++) {
- int id = Integer.parseInt(fileData.get(i).substring(0, 8).trim());
- if (id == Integer.parseInt(args[1].trim())) {
- String itog = String.format("%-8s%-30s%-8s%-4s", args[1], args[2], args[3], args[4]);
- fileData.set(i, itog);
- }
- }
- }
- if ("-d".equals(args[0])) {
- for (String l :fileData ) {
- if (l.contains((args[1]))){
- fileData.remove(l);
- }
- }
- }
- FileWriter out = new FileWriter(fileName);
- BufferedWriter bufferedWriter = new BufferedWriter(out);
- for (int i = 0; i < fileData.size() ; i++) {
- bufferedWriter.write(fileData.get(i));
- if(i != (fileData.size()-1)) bufferedWriter.newLine();
- }
- out.close();
- bufferedWriter.close();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement