How to read from a csv file in Java?

Reading from a CSV File in Java: A Comprehensive Guide

Introduction

Reading from a CSV (Comma Separated Values) file is a common task in Java programming. CSV files are widely used for storing data in a tabular format, making it easy to read and manipulate the data. In this article, we will explore how to read from a CSV file in Java, including how to handle errors, read specific columns, and perform data manipulation.

Loading the CSV File

To read from a CSV file in Java, you need to load the file into a BufferedReader object. Here’s an example of how to do it:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CSVReader {
public static void main(String[] args) {
String filePath = "example.csv";
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.err.println("Error reading from CSV file: " + e.getMessage());
}
}
}

In this example, we create a BufferedReader object and pass the file path to it. We then read each line from the file using the readLine() method and print it to the console.

Handling Errors

When reading from a CSV file, you may encounter errors such as:

  • File not found: If the file does not exist, the FileReader will throw a FileNotFoundException.
  • Permission denied: If you do not have permission to read the file, the FileReader will throw a SecurityException.
  • Invalid file format: If the file is not in the correct format, the BufferedReader will throw a IOException.

To handle these errors, you can use try-catch blocks to catch the exceptions and print error messages:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CSVReader {
public static void main(String[] args) {
String filePath = "example.csv";
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.err.println("File not found: " + e.getMessage());
} catch (SecurityException e) {
System.err.println("Permission denied: " + e.getMessage());
} catch (IOException e) {
System.err.println("Invalid file format: " + e.getMessage());
}
}
}

Reading Specific Columns

To read specific columns from a CSV file, you can use the readLine() method with a String[] array to store the column names. Then, you can use the next() method to read each line and extract the values for the specified columns:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CSVReader {
public static void main(String[] args) {
String filePath = "example.csv";
String[] columnNames = {"Name", "Age", "City"};
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
String[] values = line.split(",");
for (String value : values) {
System.out.println(value);
}
}
} catch (FileNotFoundException e) {
System.err.println("File not found: " + e.getMessage());
} catch (SecurityException e) {
System.err.println("Permission denied: " + e.getMessage());
} catch (IOException e) {
System.err.println("Invalid file format: " + e.getMessage());
}
}
}

In this example, we create an array of column names and then use the next() method to read each line and extract the values for the specified columns.

Performing Data Manipulation

To perform data manipulation on the CSV file, you can use the next() method to read each line and perform operations such as:

  • Filtering: Use the next() method to read each line and filter out rows that do not meet certain conditions.
  • Sorting: Use the next() method to read each line and sort the data in ascending or descending order.
  • Joining: Use the next() method to read each line and join the data with other data from a different file.

Here’s an example of how to perform data manipulation on the CSV file:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CSVReader {
public static void main(String[] args) {
String filePath = "example.csv";
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
String[] values = line.split(",");
// Filter out rows that do not meet certain conditions
if (values[1].equals("John")) {
System.out.println(line);
}
// Sort the data in ascending order
Arrays.sort(values);
// Join the data with other data from a different file
String[] joinedData = new String[values.length + 1];
System.arraycopy(values, 0, joinedData, 0, values.length);
joinedData[values.length] = "Combined Data";
System.out.println(Arrays.toString(joinedData));
}
} catch (FileNotFoundException e) {
System.err.println("File not found: " + e.getMessage());
} catch (SecurityException e) {
System.err.println("Permission denied: " + e.getMessage());
} catch (IOException e) {
System.err.println("Invalid file format: " + e.getMessage());
}
}
}

In this example, we filter out rows that do not meet certain conditions, sort the data in ascending order, and join the data with other data from a different file.

Conclusion

Reading from a CSV file in Java is a common task that can be accomplished using the BufferedReader class. By handling errors, reading specific columns, and performing data manipulation, you can easily read and manipulate CSV files in Java. With this guide, you should now have a solid understanding of how to read from a CSV file in Java.

Unlock the Future: Watch Our Essential Tech Videos!


Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top