Пересоздаётся файл

85
12 июля 2021, 00:00

Только часть кода для смысла

У меня есть файл с информации машин(которое создается при первом добавлений). Проблема состоит в том что когда я хочу снова добавить информацию, файл пересоздаётся тем самым удаляя предыдущую информацию о машинах.Как мне это исправить?

Scanner input = new Scanner(System.in);
    System.out.println("Меню:\n1)Добавить информацию об ещё одной машине\n2)Посмотреть о имеющихся машинах\n3)Выход");
    int number = input.nextInt();
    String cars1 ,colorcar1,typecar1;
    long sernumcar1;
    int yearreleasecar1;
    double maxspeedcar1;
    InputStream inputStream = System.in;
    Reader inputcar = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputcar);
    switch (number) {
        case 1: {
            Main Cars1;
            Cars1 = new Main();
            Main.setNumbers(Cars1);
            System.out.print("Введите название машины: ");
            cars1 = bufferedReader.readLine();
            System.out.print("Введите цвет машины: ");
            colorcar1 = bufferedReader.readLine();
            System.out.print("Введите серийный номер машины: ");
            String sernumcar11 = bufferedReader.readLine();
            sernumcar1 = Long.parseLong(sernumcar11);
            System.out.print("Введите год выпуска машины: ");
            String yearreleasecar11 = bufferedReader.readLine();
            yearreleasecar1 = Integer.parseInt(yearreleasecar11);
            System.out.print("Введите максимальную скорость машины: ");
            String maxspeedcar11 = bufferedReader.readLine();
            maxspeedcar1 = Double.parseDouble(maxspeedcar11);
            System.out.print("Введите тип машины: ");
            typecar1 = bufferedReader.readLine();
            Cars1.namecar = cars1;
            Cars1.colorcar = colorcar1;
            Cars1.sernum = sernumcar1;
            Cars1.yearrelease = yearreleasecar1;
            Cars1.maxspeed = maxspeedcar1;
            Cars1.typecar = typecar1;
            System.out.print("\n\nНазвание машины : " + cars1 + "\n" +
                    "Максимальная скорость машины: " + maxspeedcar1 + " km\\h\n" +
                    "Тип машины: " + typecar1 + "\n" +
                    "Серийный номер мышины: №" + sernumcar1 + "\n" +
                    "Цвет машины: " + colorcar1 + "\n" +
                    "Год выпуска машины: " + yearreleasecar1 + "г.\n"
            );
            File carstxt = new File("C://All_For_You//Study//Cars//Cars.txt");
            if (carstxt.exists())
                System.out.println("\nСоздание файла не трубется");
                else {
                carstxt.createNewFile();
                System.out.println("\nФайл успешно создан!");
            }
            try(FileWriter writer = new FileWriter("C://All_For_You//Study//Cars//Cars.txt", false))
            {
                writer.write(Main.numbers + "\n"); //Кол-во машин в БД
                writer.write(cars1 +"\n"); // Название машины
                writer.write(maxspeedcar11 +"\n"); // Макс. скорость машины
                writer.write(typecar1+"\n"); // Тип машины
                writer.write(sernumcar11+"\n"); // Серийный номер машины
                writer.write(colorcar1+"\n"); // Цвет машины
                writer.write(yearreleasecar1+"\n"); // Год выпуска машины
                writer.flush();
            }
            catch(IOException ex){
                System.out.println(ex.getMessage());
            }
            System.out.println("\nВыйти в меню программы?\n1)Да\n2)Нет");
                int a = input.nextInt();
                switch (a) {
                    case 1: {
                        main();
                    }
                    case 2: {
                        System.out.println("Выходим...");
                        System.exit(1);
                    }
                    default: {
                        System.out.println("Вы не ввели требуемое число!");
                        System.exit(1);
                    }
                }
            }
Answer 1

Попробуйте работать через классы Path, OpenOption

OpenOption[] oo = new OpenOption[] { StandardOpenOption.CREATE, StandardOpenOption.DSYNC, StandardOpenOption.APPEND };
Path path = Paths.get("C:\\Temp\\oo.txt");
try (OutputStream out = Files.newOutputStream(path, oo);
     PrintStream outps = new PrintStream(out)) {
    outps.println(LocalDateTime.now().format(dtf));
} catch (IOException e) {
    e.printStackTrace();
}

Массив "показателей" OpenOption позволит вам точно задать на каких условиях работать с файлом:

APPEND
If the file is opened for WRITE access then bytes will be written to the end of the file rather than the beginning.
CREATE
Create a new file if it does not exist.
CREATE_NEW
Create a new file, failing if the file already exists.
DELETE_ON_CLOSE
Delete on close.
DSYNC
Requires that every update to the file's content be written synchronously to the underlying storage device.
READ
Open for read access.
SPARSE
Sparse file.
SYNC
Requires that every update to the file's content or metadata be written synchronously to the underlying storage device.
TRUNCATE_EXISTING
If the file already exists and it is opened for WRITE access, then its length is truncated to 0.
WRITE
Open for write access.
READ ALSO
Как можно обфусцировать C код через NDK?

Как можно обфусцировать C код через NDK?

Как можно обфусцировать Си код через ndk, или как вообще это сделать

88
StackOverflowError

StackOverflowError

данный код выдает вот такую ошибку:

109
Анимация фрагментов

Анимация фрагментов

начал работать с фрагментами, и возник такой вопрос: Есть ли в Android студии возможность анимировать переход между фрагментами, как Viewpager, но с другой...

83
Перенос js в отдельный файл

Перенос js в отдельный файл

Есть код, который рекомендуется вставлять инлайн:

102