以下是我正在使用的.csv文件的格式 -
Hostname,IP Address,Patched?,OS Version,Notes
A.example.COM,1.1.1.1,NO,11,Faulty fans
b.example.com,1.1.1.2,no,13,Behind the other routers so no one sees it
C.EXAMPLE.COM,1.1.1.3,no,12.1
d.example.com,1.1.1.4,yes,14
c.example.com,1.1.1.5,no,12,Case a bit loose
e.example.com,1.1.1.6,no,12.3
f.example.com,1.1.1.7,No,15,Guarded by sharks with lasers on their heads
我目前有这个程序,它将上述.csv文件中的所有数据读入数组列表,然后将结果输出到控制台,如包含的输出文本中所示。理想情况下,我最终需要能够将每个不同行中的每个不同字段相互比较,执行计算等,因此希望将每一行保存为数组列表中的对象。我试过这样做但到目前为止没有成功。是否有一种简单的方法来修改我的程序来执行此操作?另外,如果可能的话,我希望标题和说明不被包括在内。这是我到目前为止的代码 -
package crunchify;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class CrunchifyCSVtoArrayList {
public static void main(String[] args) {
BufferedReader crunchifyBuffer = null;
try {
String crunchifyLine;
crunchifyBuffer = new BufferedReader(new FileReader("Crunchify-CSV-to-ArrayList.csv"));
while ((crunchifyLine = crunchifyBuffer.readLine()) != null) {
System.out.println("ArrayList data: " + crunchifyCSVtoArrayList(crunchifyLine) + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (crunchifyBuffer != null) crunchifyBuffer.close();
} catch (IOException crunchifyException) {
crunchifyException.printStackTrace();
}
}
}
// Utility which converts CSV to ArrayList using Split Operation
public static ArrayList<String> crunchifyCSVtoArrayList(String crunchifyCSV) {
ArrayList<String> crunchifyResult = new ArrayList<String>();
if (crunchifyCSV != null) {
String[] splitData = crunchifyCSV.split("\\s*,\\s*");
for (int i = 0; i < splitData.length; i++) {
if (!(splitData[i] == null) || !(splitData[i].length() == 0)) {
crunchifyResult.add(splitData[i].trim());
}
}
}
return crunchifyResult;
}
}
当前输出:
ArrayList数据:[主机名,IP地址,已修补?,操作系统版本,注释]
ArrayList数据:[A.example.COM,1.1.1.1,NO,11,有毛病的粉丝]
ArrayList数据:[b.example.com,1.1.1.2,no,13,在其他路由器后面,所以没有人看到它]
ArrayList数据:[C.EXAMPLE.COM,1.1.1.3,no,12.1]
ArrayList数据:[d.example.com,1.1.1.4,是,14]
ArrayList数据:[c.example.com,1.1.1.5,no,12,Case有点松散]
ArrayList数据:[e.example.com,1.1.1.6,no,12.3]
ArrayList数据:[f.example.com,1.1.1.7,No,12.2]
ArrayList数据:[g.example.com,1.1.1.6,不,15,由头上戴着激光的鲨鱼守卫]
为了更详细地介绍我最终需要做的事情,需要打印出哪些路由器需要更新,例如:如果任何路由器低于版本12,则打印出那些需要更新的路由器。
答案 0 :(得分:0)
您应该创建一个自定义类来保存数据。此类的对象表示csv文件中的单行。