读取.csv文件(系统找不到指定的文件)

时间:2018-05-19 09:26:45

标签: java io

我已经看到了这个问题和类似问题,但我的问题是它刚才工作正常。我哪里做错了? 这是我用来解决如何读取.csv文件并将其中的值传递给其他文件的一个小例子,然后在更大的应用程序中实现它。

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;

    public class Main {


public static void main(String[] args) {

    String fileName = "data.csv";
    File file = new File(fileName);

    try {
        Scanner inputStream = new Scanner(file);
        inputStream.next();//Ignore first line
        while(inputStream.hasNext()) {
            String data = inputStream.next();//gets a whole line
            //create a string array where value at 0 is the name, value at 1 is the quantity, and value at 2 is the price
            String[] values = data.split(",");
            int quantity = Integer.parseInt(values[1]);
            System.out.println(values[0] + "\n" + quantity + "\n" + values[2]);
        }
        inputStream.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}}

我为我的大型程序做了这个,它给了我找不到错误的页面,当我去仔细检查这个项目时,它也不会运行。它给了我同样的错误。我重新启动了Eclipse并检查了几次以查找我是否意外遗漏了某些内容或更改了某些内容。 data.csv就在我的src文件夹中。我甚至喋喋不休地让它出现在Eclipse项目视图中。我错过了什么?

Name,Quantity,Price Tea,100,2.50 Coke,50,2.50 Lays,32,1.00 Cheetos,34,1.10 Snickers,30,1.25 Butterfinger,70,1.50 Five,40,0.75 Orbits,50,0.90

2 个答案:

答案 0 :(得分:0)

这仅限于使用opencsv的最简单,最强大的方式,让您可以立即投入使用。

为了阅读,创建一个bean以包含您想要读取的信息,使用opencsv注释注释bean字段,然后执行以下操作:

List<MyBean> beans = new CsvToBeanBuilder(FileReader("yourfile.csv"))
   .withType(Visitors.class).build().parse();

为了编写,创建一个bean来包含你想要写的信息,用opencsv注释注释bean字段,然后执行以下操作:

// List<MyBean> beans comes from somewhere earlier in your code.
 Writer writer = new FileWriter("yourfile.csv");
 StatefulBeanToCsvBuilder beanToCsv = StatefulBeanToCsvBuilder(writer).build();
 beanToCsv.write(beans);
 writer.close();

假设您正在为分隔符使用选项卡,您可以执行以下操作:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t');

或带注释阅读:

CsvToBean csvToBean = CsvToBeanBuilder(new FileReader("yourfile.csv"))
       .withSeparator('\t').build();

如果您单独引用转义字符而不是双引号,则可以使用三参数构造函数:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t', '\'');

或带注释阅读:

CsvToBean csvToBean = CsvToBeanBuilder(new FileReader("yourfile.csv"))
       .withSeparator('\t').withQuoteChar('\'').build();

最基本的,您可以使用opencsv来解析输入并返回String [],因此:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
     String [] nextLine;
     while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
     }

答案 1 :(得分:0)

嗯,我不确定为什么"data.csv"停止了工作,但是我将路径更改为"src/data.csv"并且工作正常。这引出了一个问题,为什么它会在一个时刻而不是下一个时刻起作用?