Java 我的IntelliJ似乎找不到我的csv文件?
因此,我制作了一个类来跟踪我导入的数据:Java 我的IntelliJ似乎找不到我的csv文件?,java,csv,bufferedreader,Java,Csv,Bufferedreader,因此,我制作了一个类来跟踪我导入的数据: package com.company; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; public class ImportData { public ImportData() {
package com.company;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class ImportData {
public ImportData() {
}
public static ArrayList<Pizza> readData() throws IOException{
String file = "Users/mathiaspoulsen/Desktop/SP3MarioPizza/pizzas.csv";
ArrayList <Pizza> content = new ArrayList<>();
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
String line = br.readLine();
while ((line = br.readLine()) != null) {
line = br.readLine();
String [] lineArr = line.split(",");
Pizza pizza = new Pizza (Integer.parseInt(lineArr[0]),lineArr[1],Double.parseDouble(lineArr[2]));
content.add(pizza);
}
} catch (FileNotFoundException e) {
//Some error logging
}
return content;
}
package.com公司;
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
公共类导入数据{
公共导入数据(){
}
公共静态ArrayList readData()引发IOException{
String file=“Users/mathiaspoulsen/Desktop/SP3MarioPizza/pizzas.csv”;
ArrayList内容=新建ArrayList();
try(BufferedReader br=new BufferedReader(new FileReader(file))){
String line=br.readLine();
而((line=br.readLine())!=null){
line=br.readLine();
字符串[]lineArr=line.split(“,”);
Pizza Pizza=new Pizza(Integer.parseInt(lineArr[0]),lineArr[1],Double.parseDouble(lineArr[2]);
添加(比萨饼);
}
}catch(filenotfounde异常){
//一些错误记录
}
返回内容;
}
然后,我尝试在main方法中运行它,以查看它是否正确加载csv文件。如下所示:
package com.company;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws IOException {
/* int i = 0;
String fileName = "pizzas.csv";
Path pathToFile = Paths.get(fileName);
System.out.println(pathToFile.toAbsolutePath());
*/
// ArrayList<Pizza> pizzas = ImportData.readData();
System.out.println(ImportData.readData());
}
}
package.com公司;
导入java.io.IOException;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.util.ArrayList;
公共班机{
公共静态void main(字符串[]args)引发IOException{
/*int i=0;
字符串fileName=“pizzas.csv”;
Path pathToFile=Path.get(文件名);
System.out.println(pathToFile.toabsolutionPath());
*/
//ArrayList pizzas=ImportData.readData();
System.out.println(ImportData.readData());
}
}
该程序的输出为:[]
为什么不显示比萨饼?csv文件中的比萨饼的结构如下:
比萨饼编号(整数)、比萨饼名称(字符串)、价格(双倍)
1,Margarita,69.00您多次阅读该行,这很可能是导致您出现问题的原因。只需阅读该行一次,并在解析之前检查while语句中的该行是否为空。此外,最好检查以确保解析成功
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
公共类导入数据{
公共导入数据(){
}
公共静态ArrayList readData()引发IOException{
字符串文件=“/Users/your/path/pizza.csv”;
ArrayList内容=新建ArrayList();
try(BufferedReader br=new BufferedReader(new FileReader(file))){
弦线;
而((line=br.readLine())!=null){
字符串[]lineArr=line.split(“,”);
添加(新批萨(Integer.parseInt(lineArr[0]),lineArr[1],Double.parseDouble(lineArr[2]));
}
}
catch(filenotfounde异常){
系统输出打印ln(e);
}
返回内容;
}
}
我假设您希望将“/Users/
作为您的文件路径也是//在您的代码中逐字记录错误吗?您应该在修复文件路径后实际填写该项…line=br.readLine()
只需要在循环中调用一次,除非您想跳过每隔一行replace//使用e.printStackTrace()记录一些错误;
这样您就可以真正看到哪里出了问题。另外,正如一位板球运动员所提到的,您的文件路径看起来对您想要的内容无效。为了避免问题,请指定如下完整路径:“C:/Users/mathiapoulsen/Desktop/SP3MarioPizza/pizzas.csv”
谢谢您的回答!出现了两个问题。1.字符串文件=”Users/mathiaspoulsen/Desktop/SP3MarioPizza/pizzas.csv“应该是字符串文件=“/Users/mathiaspoulsen/Desktop/SP3MarioPizza/pizzas.csv”;2.String-line=String-line=br.readLine();应该是String-line=“”;还更改了我的FileNotFoundException eThanks以获取答案!出现了两个问题。1.String-file=”Users/mathiaspoulsen/Desktop/SP3MarioPizza/pizzas.csv“应为字符串文件=“/Users/mathiaspoulsen/Desktop/SP3MarioPizza/pizzas.csv”;2.String line=String line=br.readLine();应为String line=“”;还更改了我的文件notfounde异常