java csv编程_java-在csv文件中编辑内容

该博客讨论了如何在Java应用程序中编辑CSV文件中的动物详细信息。通过AnimalManager类实现加载、编辑和保存动物数据,但遇到一个问题:尽管程序显示编辑成功,但CSV文件实际内容并未更新。
摘要由CSDN通过智能技术生成

我正在尝试找到一种方法来编辑csv文件的内容.

主应用

package project;

public class Test {

public static void main(String[] ages) {

//Load file

AnimalManager aMgr = new AnimalManager();

aMgr.loadFromFile("AnimalDetails.txt");

// try {

// Animals anim = aMgr.getAnimalById("48331827032019");

// aMgr.deleteAnimal(anim);

// } catch (IllegalArgumentException exc) {

// System.out.println(exc);

// }

System.out.println("Edit Animal:");

boolean edited = aMgr.editAnimal("48331827032019",5,"German","200","Huskies","n",1000.0,"John"); //By ID

if (edited) {

System.out.println("Animal has been edited successfully.");

} else {

System.out.println("Animal not found (test Failed).");

}

}

}

动物经理

package project;

import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class AnimalManager {

private final ArrayList animalList;

public AnimalManager() {

this.animalList = new ArrayList<>();

}

public boolean addAnimal(Animals a) {

if (a == null)

throw new IllegalArgumentException("Animal argument is null");

if(animalList.contains(a))

return false;

animalList.add(a);

return true;

}

public void deleteAnimal (Animals a) {

if (a == null)

throw new IllegalArgumentException("Animal argument is null");

animalList.remove(a);

}

public Animals getAnimalById(String ID) {

for (Animals a : this.animalList) {

if (a.getID().equals(ID))

return a;

}

return null;

}

public boolean editAnimal(String ID,int age,String breed,String breedPurity,String motherBreed,String fatherBreed,String medicalHistory,String identification,double price,String owner) {

// test for null and for duplicate

if (ID == null || age == 0 || breed == null || breedPurity == null || motherBreed == null|| fatherBreed == null || medicalHistory == null|| price == 0 || owner == null)

throw new IllegalArgumentException("One or more arguments are null");

// Search for the animal.

for (Animals p: animalList) {

if (p.getID().equals(ID)) {

p.setAge(age);

p.setBreed(breed);

p.setMother(motherBreed);

p.setFather(fatherBreed);

p.setMedical(medicalHistory);

p.setIdenti(identification);

p.setPrice(price);

p.setOwner(owner);

return true; // Animal has been edited successfully.

}

}

return false; // Means animal with the supplied id is not found.

}

//Load from file

public void loadFromFile(String filename) {

try {

Scanner sc = new Scanner(new File(filename));

sc.useDelimiter("[,\r\n]+");

//animal details: id,age,breed,purity of breed,mother breed,father breed,medical history,identification,price,owner

while(sc.hasNext()) {

String ID = sc.next();

int age = sc.nextInt();

String breed = sc.next();

String breedPurity = sc.next();

String motherBreed = sc.next();

String fatherBreed = sc.next();

String medicalHistory = sc.next();

String identification = sc.next();

double price = sc.nextDouble();

String owner = sc.next();

animalList.add(new Animals(ID,breedPurity,motherBreed,fatherBreed,medicalHistory,owner ));

}

sc.close();

}catch (IOException e) {

System.out.println("Exception thrown. " + e);

}

}

public String toString() {

// use String if more comfortable with it - StringBuilding faster for concat

// than (immutable) String

StringBuilder strBuilder = new StringBuilder();

for (Animals p : this.animalList) {

strBuilder.append(p.toString()).append("\n");

}

return strBuilder.toString();

}

}

这里的想法是提供您要编辑并写下新信息以替换旧信息的特定动物ID.但是,该代码似乎不起作用-当我运行该程序时,它会提示“已成功编辑”,但csv文件的内容保持不变.

CSV

0,2,AmercianShorthair,100,y,900.0,Ann

3,4,GermanShepherd,no,yes,600.0,Dave

6,3,Poodle,300.0,Dianna

456,Azawakh,50,Unknown,April

25041019042018,1,Vizsla,TreeingTennesseeBrindle,500.0,Lex

3271,Beagle,200.0,Blanton

48331827032019,33,sheperd,Mike

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值