我正在努力学习 Java,我想知道如何正确解析 CSV 文件。
假设我有一家商店。我创建了一个 CSV 文件,如下所示:
在我的主类中,我添加了一个可以购买元素的客户实例。目前它什么都不做,但我希望该操作可以搜索 CSV 文件,如果它在列表中找到该产品,则它会相应地更新该产品的数量。现在,它什么都不做:
public class Customer {
int custID;
String firstName;
String lastName;
public void buyProd(){
Scanner sc = new Scanner(System.in);
System.out.println("To buy a product, enter it's name:");
String prodToBuy = sc.nextLine();
System.out.println("You bought " + prodToBuy + " \nThanks for buying");
}
public void returnProd(){
System.out.println("Thanks for returning the product");
}
}
我找到了一段可以解析所有 CSV 文件的代码,但我不确定我应该如何停止产品的那个关键字,然后检索和更新数量字段
public class CSVParser{
public static void main(String[] args) {
try {
String fileName= "C:\\temp\\test.csv";
File file= new File(fileName);
Scanner scanner = new Scanner(file);
// set comma as delimiter
scanner.useDelimiter(",");
// read all fields
while (scanner.hasNext()) {
System.out.print(scanner.next() + " ");
}
scanner.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}
我知道我不应该使用 CSV 文件作为数据库。我不会,这只是我想了解的任务。我的 CSV 文件最多只包含几行和几列。
对此事的任何帮助都会很棒。
最佳答案
最简单的方法是使用 FileWriter
反对并处理 CSV
文件作为任何其他文本文件。在这个例子中,数据存储在一些 List
中。对象,我们只是迭代并附加到作者:
// Our example data
List<List<String>> rows = Arrays.asList(
Arrays.asList("Jean", "author", "Java"),
Arrays.asList("David", "editor", "Python"),
Arrays.asList("Scott", "editor", "Node.js")
);
FileWriter csvWriter = new FileWriter("new.csv");
csvWriter.append("Name");
csvWriter.append(",");
csvWriter.append("Role");
csvWriter.append(",");
csvWriter.append("Topic");
csvWriter.append("\n");
for (List<String> rowData : rows) {
csvWriter.append(String.join(",", rowData));
csvWriter.append("\n");
}
csvWriter.flush();
csvWriter.close();
使用 FileWriter
时始终确保您flush
和 close
流。这提高了 IO 操作的性能,并表明没有更多数据要写入输出流。然后,您还可以阅读
CSV
文件 - FileReader
的简单组合, BufferedReader
, 和 String.split()
可以方便从CSV
读取数据.
关于java - 如何使用 CSV 文件作为 Java 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60743210/