Advertisement
mamant38

удаление и изменение строк в файле

Apr 24th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.92 KB | None | 0 0
  1. package com.javarush.task.task18.task1828;
  2.  
  3. /*
  4. CrUD для таблицы внутри файла
  5. Считать с консоли имя файла для операций CrUD
  6.  
  7. Программа запускается с одним из следующих наборов параметров:
  8. -u id productName price quantity
  9. -d id
  10.  
  11. Значения параметров:
  12. где id - 8 символов
  13. productName - название товара, 30 символов
  14. price - цена, 8 символов
  15. quantity - количество, 4 символа
  16. -u - обновляет данные товара с заданным id
  17. -d - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)
  18.  
  19. В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
  20. id productName price quantity
  21. Данные дополнены пробелами до их длины
  22.  
  23. Пример:
  24. 19847   Шорты пляжные синие           159.00  12
  25. 198479  Шорты пляжные черные с рисунко173.00  17
  26. 19847983Куртка для сноубордистов, разм10173.991234
  27.  
  28.  
  29. Требования:
  30. 1. Программа должна считать имя файла для операций CrUD с консоли.
  31. 2. При запуске программы без параметров список товаров должен остаться неизменным.
  32. 3. При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле.
  33. 4. При запуске программы с параметрами "-d id" строка товара с заданным id должна быть удалена из файла.
  34. 5. Созданные для файлов потоки должны быть закрыты.
  35. */
  36.  
  37. import java.io.*;
  38. import java.util.ArrayList;
  39.  
  40. public class Solution {
  41.     public static void main(String[] args) throws Exception {
  42.  
  43.         if (args.length != 0) {
  44.             BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  45.             String fileName = reader.readLine();
  46.             reader.close();
  47.  
  48.             reader = new BufferedReader(new FileReader(fileName));
  49.             ArrayList<String> fileData = new ArrayList<>();
  50.             String line;
  51.             while ((line = reader.readLine()) != null) {
  52.                 if (!line.isEmpty()) {
  53.                     fileData.add(line);
  54.                 }
  55.             }
  56.             reader.close();
  57.  
  58.             if ("-u".equals(args[0])) {
  59.                 for (int i = 0; i < fileData.size(); i++) {
  60.                     int id = Integer.parseInt(fileData.get(i).substring(0, 8).trim());
  61.                     if (id == Integer.parseInt(args[1].trim())) {
  62.                         String itog = String.format("%-8s%-30s%-8s%-4s", args[1], args[2], args[3], args[4]);
  63.                         fileData.set(i, itog);
  64.                     }
  65.                 }
  66.             }
  67.  
  68.                 if ("-d".equals(args[0])) {
  69.                     for (String l :fileData ) {
  70.                         if (l.contains((args[1]))){
  71.                             fileData.remove(l);
  72.                         }
  73.                     }
  74.  
  75.                 }
  76.  
  77.                 FileWriter out = new FileWriter(fileName);
  78.                 BufferedWriter bufferedWriter = new BufferedWriter(out);
  79.                 for (int i = 0; i < fileData.size() ; i++) {
  80.                     bufferedWriter.write(fileData.get(i));
  81.                     if(i != (fileData.size()-1)) bufferedWriter.newLine();
  82.                 }
  83.                 out.close();
  84.                 bufferedWriter.close();
  85.             }
  86.         }
  87.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement