java - 如何使用 CSV 文件作为 Java 数据库?

标签 java csv

我正在努力学习 Java,我想知道如何正确解析 CSV 文件。

假设我有一家商店。我创建了一个 CSV 文件,如下所示:

enter image description here

在我的主类中,我添加了一个可以购买元素的客户实例。目前它什么都不做,但我希望该操作可以搜索 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 时始终确保您flushclose流。这提高了 IO 操作的性能,并表明没有更多数据要写入输出流。
然后,您还可以阅读 CSV文件 - FileReader的简单组合, BufferedReader , 和 String.split()可以方便从CSV读取数据.

关于java - 如何使用 CSV 文件作为 Java 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60743210/

相关文章:

java - 书店的类图

python - 如何将字典列表写入具有多个值的 CSV

c# - 如何将 CSV 文件拆分为多个部分

python - 在Python中使用gdal从csv文件生成tiff文件

python - 使用 numpy.genfromtxt 读取单行 CSV

java - if(condition) else or if(condition),使用break时性能有区别吗?

java - 如何使用 spring 和 jersey 生成多种媒体类型

java - 解析数据时出错 org.json.JSONException : type java. lang.String 无法转换为 JSONObject

java - 无法从 JUnit 访问 HSQLDB 表

java - JTable新列添加不成功