java - 从 CSV 读取并将数据存储到 ArrayList

标签 java android csv arraylist opencsv

我正在使用 OpenCSV 读取存储在设备内部存储器中的名为 product.csv 的 CSV 文件 \G Shop\Input CSV\。该文件包含一些随机产品名称的单列。我想将每个产品存储到一个 ArrayList 中,但我的代码不起作用。

代码如下:

String baseDirectory = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
File readCsvFolder = new File(baseDirectory + File.separator + "G Shop" + File.separator + "Input CSV" + File.separator);
String readFileName;
String readFilePath;
List<String[]> readData;

void readCSV() {
    readCsvFolder.mkdirs();

    readFileName = "products.csv";
    readFilePath = readCsvFolder.getPath() + File.separator + readFileName;
    try {
        ArrayList<String> searchProducts = new ArrayList<>();

        readData = new ArrayList<String[]>();
        CSVReader reader = new CSVReader(new FileReader(readFilePath));
        readData = reader.readAll();

        String[] row;
        while ((row = reader.readNext()) != null) {
            searchProducts.add(row[0]);

            //This Toast never shows up!
            Toast.makeText(mainActContext,"Saved : " + row[0],Toast.LENGTH_SHORT).show();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我没有看到错误或警告,调用方法后根本没有输出。我将非常感谢任何形式的帮助或建议:)

最佳答案

readData = reader.readAll(); 正在读取整个文件输入流,直到文件结束。因此 row = reader.readNext()) != null 从一开始就不会给你任何东西;读者已经到达文件末尾。相反,您的循环可以简单地是:for(String[] row:readData):

for(String[] row:readData) {
    searchProducts.add(row[0]);

    //Now the toast shows up!
    Toast.makeText(mainActContext,"Saved : " + row[0],Toast.LENGTH_SHORT).show();
}

关于java - 从 CSV 读取并将数据存储到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005318/

相关文章:

android - 删除原生 android 中的循环依赖

java - Spring Data @Query 使用 VARCHAR 而不是 NVARCHAR

java - 如何将自定义版本的 WebDataBinder 注入(inject) Spring 3 MVC?

java - OpenGL 3.2 纹理不显示

java - 将 android 连接到 openLDAP 服务器

android - 如何使用 Camera API 实现 SlowMotion 和 TimeLapse 视频录制

java - 从 API 读取数据

node.js - 在nodejs中从CSV文件获取数据

python - 如何在Python中使用带有法语字符的csv.reader,例如é,à,ç,ê,ë,

java - 无法使用 Maven 解决 Artifact 错误