Java 读入文件并比较每个元素
我有两个给定的文件,其中每一行由四个元素组成,这些元素用“,”分隔。我想读入这两个文件,以便比较这两个文件的行,但我也想列出它们。两个文件中的大多数行是相同的,但也有一些行仅出现在两个文件中的一个文件中,或者它们有一个不同的元素。我的元素类别如下:Java 读入文件并比较每个元素,java,string,class,text,compiler-errors,Java,String,Class,Text,Compiler Errors,我有两个给定的文件,其中每一行由四个元素组成,这些元素用“,”分隔。我想读入这两个文件,以便比较这两个文件的行,但我也想列出它们。两个文件中的大多数行是相同的,但也有一些行仅出现在两个文件中的一个文件中,或者它们有一个不同的元素。我的元素类别如下: public class Student { public String name; public Student (String name) { this.name = name; } public
public class Student {
public String name;
public Student (String name) {
this.name = name;
}
public static String[] toString(String name)
{
String s1 = ""; String s2 = ""; String s3 = ""; String s4 = "";
int position = 0;
for(int i = 0; name.charAt(i) != name.length(); i++)
{
if (name.charAt(i) == ',') {++position; continue;}
if (position == 0) s1 += name.charAt(i);
if (position == 1) s2 += name.charAt(i);
if (position == 2) s3 += name.charAt(i);
if (position == 3) s4 += name.charAt(i);
}
String[] s = new String[4];
return s;
}
}
我还有一个CSVReader,我还没有完成,我想:
public class CSVReader {
/**
* This method reads in a *.csv file and saves every entry as elements
* from a twodimensional array.
*
* @param filename track to the file Pfad zur Datei, example
* ".Root/test/echo.csv"
* @return {@code String[][] s} where {@code s[i][j]}
* is the j-th value in the i-th line
*/
public String[][] readCSV(String filename) {
ArrayList<String[]> result = new ArrayList<>();
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
StringBuilder stringBuilder = new StringBuilder();
try {
br = new BufferedReader(new FileReader(filename));
while ((line = br.readLine()) != null) {
result.add(line.split(cvsSplitBy));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result.toArray(new String[result.size()][]);
}
}
谢谢你的帮助 将
CSVReader
类中的readCsv
方法设置为静态,以便您可以在任何地方调用它:
public static String[][] readCSV(String filename)
现在您可以调用CSVReader.readCsv
:
file1 = CSVReader.readCsv("./Root/files/file1.csv");
echo = CSVReader.readCsv("./Root/files/echo.csv");
在这行中file1=CSVReader(“./Root/files/file1.csv”)/*找不到符号*/
Java compailer“seys”您无法解析什么是
CSVReader
您的语法就像调用函数一样 一个解决方案是这个代码snipet
CSVReader csvReader = new CSVReader();
file1 = csvReader.readCsv("./Root/files/file1.csv");
echo = csvReader.readCsv("./Root/files/echo.csv");
注意:csvReader
是一个变量
另一个解决方案是向readCsv
方法添加静态修饰符。在tat情况下,代码如下所示(没有构造函数调用)
您可以使
readCSV()
static
并执行以下操作:String[]file1=CSVReader.readCSV(“./Root/files/file1.csv”)代码>以及如何为我想要执行的for循环调用最后一个元素来比较这两个文件?我发现输出不是我想要的。如何使用Student类分别输出文件的每一行?是的,但我需要知道如何输出,因为Java中有些东西我不知道。你的问题是“我的问题是如何在主类中使用CSVReader…”。所以,我试着回答这个问题。如果某个问题确实正常工作,则创建另一个问题。“…因为Java中有些东西我不知道。”这里有很多社区可以帮助你。祝你好运。啊,我明白了,问题是一旦CSVReader本身,然后也是主课堂上的读入。但是,我还是要一行一行地写,而不是一次把整个文件都写下来。
CSVReader csvReader = new CSVReader();
file1 = csvReader.readCsv("./Root/files/file1.csv");
echo = csvReader.readCsv("./Root/files/echo.csv");
file1 = CSVReader.readCsv("./Root/files/file1.csv");
echo = CSVReader.readCsv("./Root/files/echo.csv");