【问题标题】:How do I print my CSV file to an ArrayList?如何将 CSV 文件打印到 ArrayList?
【发布时间】:2017-01-19 15:24:31
【问题描述】:

这是我的代码

package sequentialFilePractice;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ReadFile{

static String line = "";

ReadFile() throws FileNotFoundException{
    readTheFile();
    CSVtoArrayList();
}

public String readTheFile() throws FileNotFoundException{
    String csvFile = "H:\\S6\\AH Computing\\Java Practice\\test.csv";
    BufferedReader br = null;
    String cvsSplitBy = ",";

    try {

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {


        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return line;


}

public static ArrayList<String> CSVtoArrayList() {
    ArrayList<String> splitCSV = new ArrayList<>();

    if (line != null) {
        String[] splitData = line.split("\\s*,\\s*");
        for (int i = 0; i < splitData.length; i++) {
            if (!(splitData[i] == null) || !(splitData[i].length() == 0)) {
                splitCSV.add(splitData[i].trim());
            }
        }
    }

    for(int j = 0;j < splitCSV.size();j++){
        System.out.println(splitCSV.get(j));
    }
        return splitCSV;
    }

public static void main(String[]args) throws IOException{
    ReadFile f = new ReadFile();
}
}

代码编译并且文件存在。我可以打印行,它会打印文件的内容,但是当我打印 arrayList 时,什么都没有输出,所以它没有被复制。这是我第一次在 java 中使用顺序文件。

【问题讨论】:

  • 我还没有阅读代码,但您无法将代码打印到ArrayList。您的意思是将ArrayList 打印到CSV 文件中吗?或者将 CSV 文件读入 ArrayList?
  • 阅读line 后,您似乎没有做任何事情。您应该使用line.split(cvsSplitBy) 之类的东西来从中获取值。 (注意,顺便说一下,这是一种非常简单的读取 CSV 文件的方法)
  • @Michael 抱歉,措辞不好。我想将csv的内容读入arraylist,然后将arraylist的内容打印到控制台。
  • @Stik 我有以下行 String[] splitData = line.split("\\s*,\\s*");
  • 您不能只是将代码的某些部分剪切并粘贴到其他地方并期望它自己调用... :) 从 while 循环内部调用 CSVtoArrayList() 方法,进行必要的更改,或者只是把它放回原来的位置

标签: java csv arraylist sequential


【解决方案1】:

您必须手动读取文件吗?如果没有,您应该查看http://opencsv.sourceforge.net/,它允许您将 CSV 直接读入List&lt;String[]&gt;,而不必处理循环、拆分行和创建列表的管理员。

本质上将您的代码简化为:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
List myEntries = reader.readAll();

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多