使用JAVA从.csv文件中删除项

使用JAVA从.csv文件中删除项,java,csv,Java,Csv,您好,我想使用JAVA从.csv文件中删除一行 用户可以决定要删除的行。 输入应类似于: 删除一个号码: A02,40 该文件如下所示: 谁能给我一些建议吗 这是我写入.csv文件的方式 希望能有所帮助 package finaltest; import java.util.Scanner; import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.util

您好,我想使用JAVA从.csv文件中删除一行

用户可以决定要删除的行。 输入应类似于:

删除一个号码:

A02,40
该文件如下所示:

谁能给我一些建议吗

这是我写入.csv文件的方式 希望能有所帮助

package finaltest;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class AddCourse {   
public static void main(String[] args) throws Exception {
    Map<String, List<String>> map = new TreeMap<String, List<String>>();
    
BufferedReader reader = new BufferedReader(new FileReader("DB_ID.csv"));
String line = reader.readLine();//read header
while ((line = reader.readLine()) != null) {
    String key = getField(line);
    List<String> l = map.get(key);
    if (l == null) {
        l = new LinkedList<String>();
        map.put(key, l);
    }
    l.add(line);
}
reader.close();

FileWriter additem = new FileWriter("add_ID.csv");
additem.write("item_id, item_prise\n");
System.out.println("please input number: ");
Scanner in = new Scanner(System.in);
List<String> input = new LinkedList<String>();
input.add(in.next());

for (String val : input) {
    additem.write(val);
    additem.write("\n");
}
in.close();

for (List<String> list : map.values()) {
    for (String val : list) {
        additem.write(val);
        additem.write("\n");
    }   
}
additem.close();
}
private static String getField(String line) {
    return line.split(",")[0];// extract value you want to sort on
}
}
包最终测试;
导入java.util.Scanner;
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.util.LinkedList;
导入java.util.List;
导入java.util.Map;
导入java.util.TreeMap;
公共类AddCourse{
公共静态void main(字符串[]args)引发异常{
Map Map=newtreemap();
BufferedReader=new BufferedReader(新文件阅读器(“DB_ID.csv”);
String line=reader.readLine();//读取标题
而((line=reader.readLine())!=null){
字符串键=getField(行);
列表l=map.get(键);
if(l==null){
l=新链接列表();
地图放置(键,l);
}
l、 添加(行);
}
reader.close();
FileWriter additem=新的FileWriter(“add_ID.csv”);
附加项写入(“项目id,项目价格”);
System.out.println(“请输入号码:”);
扫描仪输入=新扫描仪(系统输入);
列表输入=新建LinkedList();
input.add(in.next());
for(字符串val:input){
附加写入(val);
附加项写入(“\n”);
}
in.close();
对于(列表:map.values()){
for(字符串val:list){
附加写入(val);
附加项写入(“\n”);
}   
}
additem.close();
}
私有静态字符串getField(字符串行){
返回行。拆分(“,”[0];//提取要排序的值
}
}

您从一个文件读取,然后写入另一个文件。省略不符合要求的行。完成后,删除原始文件,重命名新文件

我建议使用一个库来帮助阅读和编写CSV。您可以在Java生态系统中进行多种选择。我最喜欢的是ApacheCommonsCSV


如果你经常做这个删除操作,你可以考虑使用一个数据库。

你从一个文件中读取并写入另一个文件。省略不符合要求的行。完成后,删除原始文件,重命名新文件

我建议使用一个库来帮助阅读和编写CSV。您可以在Java生态系统中进行多种选择。我最喜欢的是ApacheCommonsCSV


如果你经常做这个删除操作,你可以考虑使用一个数据库。

< p>一旦你的CSV数据读入一个2-D数组,你就可以搜索每个数组的第一个元素,看看它是否包含“A02”。然后只需重写数据,但不包括该行。

一旦您将CSV数据读入二维数组,您只需搜索每个数组的第一个元素,看看它是否包含“A02”,然后只需重写数据,但不包括该行。

您是否要读写该文件?@MadhuSharma是,它可以输出到另一个文件或同一个文件中。您打算读写该文件吗?@MadhuSharma是的,它可以输出到另一个文件或同一个文件中