我已经看到了这个问题和类似问题,但我的问题是它刚才工作正常。我哪里做错了? 这是我用来解决如何读取.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
答案 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"
并且工作正常。这引出了一个问题,为什么它会在一个时刻而不是下一个时刻起作用?