Ошибка при изменении значения в файле csv с использованием файла произвольного доступа ⇐ JAVA
-
Anonymous
Ошибка при изменении значения в файле csv с использованием файла произвольного доступа
Я пытаюсь указать цену продажи автомобиля, который продается в файле Vehicle.csv. Вот метод для класса VehicleData, который я создал.
В файле csv есть пять столбцов: carPlate, carModel,acquiredPrice, carStatus(1 — не продано и 0 — продано) и проданная цена.
public static void updateVehicleData() { Ввод сканера = новый сканер(System.in); System.out.print("Пожалуйста, введите номер автомобиля: "); Строка carPlate = input.nextLine(); пытаться { RandomAccessFile raf = новый RandomAccessFile("vehicle.csv", "rw"); while (raf.getFilePointer() < raf.length()) { длинный currentPosition = raf.getFilePointer(); Строковая строка = raf.readLine(); String[] VehicleData = line.split(","); // Если carPlate совпадает, обновите эту строку если (carPlate.equals(vehicleData[0])) { окончательный int CARSTATUS = 0; System.out.print("Пожалуйста, введите цену продажи автомобиля: "); Строка проданная цена = input.nextLine(); // Создаем новую строку с обновленными данными Строка updateLine = carPlate + "," + VehicleData[1] + "," // Предполагаем, что вы хотите сохранить модель автомобиля + VehicleData[2] + "," // Предполагаем, что вы хотите сохранить приобретенную цену + КАРСТАТУС + "," + цена продажи; // Перемещаем указатель в начало строки raf.seek(currentPosition); // Записываем обновленную строку, дополняя ее при необходимости пробелами Raf.writeBytes(String.format("%-" + line.length() + "s", updateLine)); // Перемещаем указатель в конец строки raf.seek(currentPosition + line.length()); раф.закрыть(); перерыв; } } System.out.println("Данные об автомобиле в файле Vehicle.csv успешно обновлены."); } catch (IOException e) { System.out.println("Произошла ошибка при обновлении данных автомобиля в файле Vehicle.csv."); е.printStackTrace(); } } Когда я указал цену продажи одной из машин, в CSV-файле возникла некоторая путаница. Строка под измененной мной проданной ценой автомобиля поднялась вверх, а рядом с измененной проданной ценой. CarPlate в перепутанной строке также стал единым с проданной ценой, и на него повлияла сумма, которую я вложил.
Если я укажу 10 в качестве проданной цены вместо
... PQR789,Шевроле,121200,0,10 РСТ901,Мицубиси,136700,0,153000 ... стало
... PQR789,Шевроле,121200,0,10ST901,Митсубиси,136700,0,153000 ... Чем больше 0 я добавляю в цену продажи, тем больше стирается номер автомобиля Mitsubishi. Что я могу сделать, чтобы CSV-файл работал правильно?
Я пытаюсь указать цену продажи автомобиля, который продается в файле Vehicle.csv. Вот метод для класса VehicleData, который я создал.
В файле csv есть пять столбцов: carPlate, carModel,acquiredPrice, carStatus(1 — не продано и 0 — продано) и проданная цена.
public static void updateVehicleData() { Ввод сканера = новый сканер(System.in); System.out.print("Пожалуйста, введите номер автомобиля: "); Строка carPlate = input.nextLine(); пытаться { RandomAccessFile raf = новый RandomAccessFile("vehicle.csv", "rw"); while (raf.getFilePointer() < raf.length()) { длинный currentPosition = raf.getFilePointer(); Строковая строка = raf.readLine(); String[] VehicleData = line.split(","); // Если carPlate совпадает, обновите эту строку если (carPlate.equals(vehicleData[0])) { окончательный int CARSTATUS = 0; System.out.print("Пожалуйста, введите цену продажи автомобиля: "); Строка проданная цена = input.nextLine(); // Создаем новую строку с обновленными данными Строка updateLine = carPlate + "," + VehicleData[1] + "," // Предполагаем, что вы хотите сохранить модель автомобиля + VehicleData[2] + "," // Предполагаем, что вы хотите сохранить приобретенную цену + КАРСТАТУС + "," + цена продажи; // Перемещаем указатель в начало строки raf.seek(currentPosition); // Записываем обновленную строку, дополняя ее при необходимости пробелами Raf.writeBytes(String.format("%-" + line.length() + "s", updateLine)); // Перемещаем указатель в конец строки raf.seek(currentPosition + line.length()); раф.закрыть(); перерыв; } } System.out.println("Данные об автомобиле в файле Vehicle.csv успешно обновлены."); } catch (IOException e) { System.out.println("Произошла ошибка при обновлении данных автомобиля в файле Vehicle.csv."); е.printStackTrace(); } } Когда я указал цену продажи одной из машин, в CSV-файле возникла некоторая путаница. Строка под измененной мной проданной ценой автомобиля поднялась вверх, а рядом с измененной проданной ценой. CarPlate в перепутанной строке также стал единым с проданной ценой, и на него повлияла сумма, которую я вложил.
Если я укажу 10 в качестве проданной цены вместо
... PQR789,Шевроле,121200,0,10 РСТ901,Мицубиси,136700,0,153000 ... стало
... PQR789,Шевроле,121200,0,10ST901,Митсубиси,136700,0,153000 ... Чем больше 0 я добавляю в цену продажи, тем больше стирается номер автомобиля Mitsubishi. Что я могу сделать, чтобы CSV-файл работал правильно?
Мобильная версия