【发布时间】:2022-10-13 18:52:28
【问题描述】:
尝试将 csv 行拆分为多个部分以从中创建对象类,我的功能如下。 ProcessLine 从 readFile 中获取该行,目前它抛出一个错误,说“无法调用 String.split(string),因为它是空的。
public static FlightOperation[] readFile(String fileName)
{
FileInputStream fileStream = null;
InputStreamReader Read;
BufferedReader bufRead;
int fileLength = getFileCount(fileName);
String line;
FlightOperation[] laxData = new FlightOperation[fileLength];
try
{
fileStream = new FileInputStream(fileName);
Read = new InputStreamReader(fileStream);
bufRead = new BufferedReader(Read);
line = bufRead.readLine();
for(int i = 0; i < fileLength; i++)
{
line = bufRead.readLine();
laxData[i] = processLine(line);
}
}
catch(IOException errorDetails)
{
if(fileStream != null)
{
try
{
fileStream.close();
}
catch(IOException ex2)
{}
}
System.out.println("Error in fileProcessing: " + errorDetails.getMessage());
}
return laxData;
}
public static FlightOperation processLine (String inLine) {
String[] splitLine;
String[] tempArray = {"0","0","0","0","0","0","0"};
int tempFlightOpsCount = 0;
int[] dateArray = {0,0,0};
splitLine = inLine.split(",");
int lineLength = splitLine.length;
for(int i = 0; i < lineLength; i++)
{
if(i == 6) {
tempFlightOpsCount = Integer.parseInt(splitLine[i]);
}
if(i<3) {
dateArray[i] = Integer.parseInt(splitLine[i]);
}
splitLine[i] = tempArray[i];
}
Date inDate = new Date(dateArray[0], dateArray[1], dateArray[2]);
FlightOperation inFlightOperation = new FlightOperation(tempArray[3], tempArray[4], tempArray[5], tempFlightOpsCount, inDate);
return inFlightOperation;
}
此函数从 CSV 文件中获取一行,并获取前三个元素组成 Date 类,最后四个元素组成 FlightOperation 类。
Day,Month,Year,FlightType,Arrival_Departure,Domestic_International,FlightOpsCount
1,1,2006,Charter,Departure,Domestic,62
这是 CSV 中的一行,因此您可以看到输入的内容。我是 Java 新手,所以不确定到底是什么导致了错误,我怀疑我的 readFile 函数有问题?因为我认为 processLine 函数应该可以正常工作。任何帮助表示赞赏。
【问题讨论】:
标签: java