我有一个文本文件:"example.csv“,它包含1000行。
文本文件包含
Dog, 3123
Cat, 6544
Chicken, 8943另一个:包含1000行的"example2.csv“。
Fruit, 3243
Banana, 9432
Chicken, 2043以及包含(100行)的数组:
Home, Dan, Dog, 4234
Home, Bug, Chicken, 3213
Home, Hds, Banana, 4324
Out, Bgh, Poodle, 3129我需要将数组中的第三列更改为CSV,example.csv中的值。如果在第一个示例中找不到,则需要查看第二个示例2.csv。
正如您在我的示例中所看到的,小鸡在这两种情况下都出现了,但是它需要从example.csv中找到值。然而,果树只出现在第二个,所以它需要从example2.csv中找到值。
在这两个csv中没有找到的任何东西都需要显示它不存在。
任何例子都是:
Home, Dan, Dog, 4234
Home, Bug, Chicken, 3213
Out, Bgh, Poodle, 3129化作
Home, Dan, 3123, 4234
Home, Bug, 8943, 3213
Home, Hds, 9432, 4324
Out, Bgh, Poodle, 3129 : Display :Missing - Poodle谢谢!
Number是数组,isFound从false拆分开始:",“
以下是我的尝试:
try {
//Scanner inFile = new Scanner (new FileReader("Files\\"+"ABTutor2018Sem2"+".csv")); // import file
brStudents = new BufferedReader(new FileReader("Files\\deploystudio.csv"));
brStudents2 = new BufferedReader(new FileReader("Files\\deploystudio2.csv"));
while ((line = brStudents.readLine()) != null) {
arrSubjectsDeploy = line.split(splitBy);
isFound = false;
for(int h = 0; h < l; h++) {
arrSubjects = Number[h].split(splitBy);
line2 = "";
errorMessage = arrSubjectsDeploy[0];
if(arrSubjects[2].equals(arrSubjectsDeploy[0])) {
arrSubjects[2] = arrSubjectsDeploy[1];
m++;
tempHolder = "";
isFound = true;
}
if(h == l-1 && isFound == false) {
System.out.println("Missing: " + errorMessage);
}
}
}
}这只是尝试做第一个文本文件..。但是仍然不能工作,因为它正在查看文本文件的内容,并查看它是否与数组相比较,而不是相反。
发布于 2018-12-05 09:22:58
您可以使用Map<String,String>存储example.csv和example2.csv的内容。然后对输入数组进行迭代,以检查它是否存在于任何一个文件中。
Map<String, String> firstFile = readFileAndConvert("Files\\deploystudio.csv");
Map<String, String> secondFile = readFileAndConvert("Files\\deploystudio2.csv");
int index = 2;
String[][] finalArray =
{{"Home", "Dan", "Dog", "4234"}, {"Home", "Bug", "Chicken", "3213"},
{"Home", " Hds", "Banana", "4324"}, {"Out", " Bgh", "Poodle", "3129"}};
for(String[] row : finalArray) {
String valueToFind = row[index];
if(firstFile.containsKey(valueToFind)) {
row[index] = firstFile.get(valueToFind);
} else if(secondFile.containsKey(valueToFind)) {
row[index] = secondFile.get(valueToFind);
} else {
System.out.println("Missing " + valueToFind);
}
}readFileAndConvert函数使用java 8,但您也可以与任何其他版本实现类似的功能。
private Map<String, String> readFileAndConvert(String path) throws IOException {
String SEPARATOR = ",";
try (Stream<String> lines = Files.lines(Paths.get(path))) {
return lines.map(line -> line.split(SEPARATOR))
.collect(Collectors.toMap(array -> array[0], array -> array[1]));
}
}https://stackoverflow.com/questions/53624259
复制相似问题