在Java中读取一行csv文件

我有一个目前有20行数据的csv文件。 数据包含员工信息,格式如下:

名字,姓氏,员工ID

所以一行会这样:Emma,Nolan,2

我知道如何在java中写入文件并将所有20行打印到控制台,但我不知道该怎么做才能让Java将一条特定的行打印到控制台。

我还想在最后一个条目中获取最后一个员工ID号,并在我添加新员工时将java添加1。 我认为这需要通过计数器来完成,而不知道如何。

你可以这样做:

BufferedReader reader = new BufferedReader(new FileReader(<>)); List lines = new ArrayList<>(); String line = null; while ((line = reader.readLine()) != null) { lines.add(line); } System.out.println(lines.get(0)); 

使用BufferedReader您可以直接读取行。 此示例逐行读取文件并将行存储在数组列表中。 您可以使用lines.get(lineNumber)访问之后的行。

 BufferedReader reader =new BufferedReader(new FileReader("yourfile.csv")); String line = ""; while((line=reader.readLine())!=null){ String [] employee =line.trim().split(","); // if you want to check either it contains some name //index 0 is first name, index 1 is last name, index 2 is ID } 

您可以一次从一行文件中读取文本,然后对该行执行任何操作,打印,比较等等…

 // Construct a BufferedReader object from the input file BufferedReader r = new BufferedReader(new FileReader("employeeData.txt")); int i = 1; try { // "Prime" the while loop String line = r.readLine(); while (line != null) { // Print a single line of input file to console System.out.print("Line "+i+": "+line); // Prepare for next loop iteration line = r.readLine(); i++; } } finally { // Free up file descriptor resources r.close(); } // Remember the next available employee number in a one-up scheme int nextEmployeeId = i; 

或者,如果您想要更多地控制读取CSV文件,那么您可以考虑使用CsvBeanReader来提供对文件内容的更多访问权限。

这是我用于读取csv文件的算法。 最有效的方法是首先将csv文件中的所有数据读入2D数组。 它只是使操作数据更加灵活。

这样,您可以通过在数组的索引中指定并使用for来指定要打印到控制台的文件的哪一行。 即:System.out.println(employee_Data [1] [y]); 记录1. y是字段的索引变量。 当然,您需要使用For循环来打印每行的每个元素。

顺便说一句,如果你想在更大的程序中使用员工数据,例如它可以将数据存储在数据库中或写入另一个文件,我建议将整个代码块封装到名为Read_CSV_File的函数中( ),它将返回一个2D String数组。

我的代码

 // The return type of this function is a String. // The CSVFile_path can be for example "employeeData.csv". public static String[][] Read_CSV_File(String CSVFile_path){ String employee_Data[][]; int x; int y; int noofFields; try{ String line; BufferedReader in = new BufferedReader(new FileReader(CSVFile_path)); // reading files in specified directory // This assigns the data to the 2D array // The program keeps looping through until the line read in by the console contains no data in it ie the end of the file. while ( (( line = in.readLine()) != null ){ String[] current_Record = line.split(","); if(x == 0) { // Counts the number of fields in the csv file. noofFields = current_Record.length(); } for (String str : values) { employee_Data[x][y] = str; System.out.print(", "+employee_Data[x][y]); // The field index variable, y is incremented in every loop. y = y + 1; } // The record index variable, x is incremented in every loop. x = x + 1; } // This frees up the BufferedReader file descriptor resources in.close(); /* If an error occurs, it is caught by the catch statement and an error message * is generated and displayed to the user. */ }catch( IOException ioException ) { System.out.println("Exception: "+ioException); } // This prints to console the specific line of your choice System.out.println(("Employee 1:); for(y = 0; y < noofFields ; y++){ // Prints out all fields of record 1 System.out.print(employee_Data[1][y]+", "); } return employee_Data; }