Try OpenCSV - it will make your life easier.

First, add this package to your gradle dependencies as follows

implementation 'com.opencsv:opencsv:4.6'

Then you can either do

import com.opencsv.CSVReader;
import java.io.IOException;
import java.io.FileReader;


...

try {
    CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
    String[] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }
} catch (IOException e) {

}

or

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
List myEntries = reader.readAll();

Edit after comment

try {
    File csvfile = new File(Environment.getExternalStorageDirectory() + "/csvfile.csv");
    CSVReader reader = new CSVReader(new FileReader(csvfile.getAbsolutePath()));
    String[] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }
} catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(this, "The specified file was not found", Toast.LENGTH_SHORT).show();
}

If you want to package the .csv file with the application and have it install on the internal storage when the app installs, create an assets folder in your project src/main folder (e.g., c:\myapp\app\src\main\assets\), and put the .csv file in there, then reference it like this in your activity:

String csvfileString = this.getApplicationInfo().dataDir + File.separatorChar + "csvfile.csv"
File csvfile = new File(csvfileString);
Answer from buradd on Stack Overflow
Top answer
1 of 7
49

Try OpenCSV - it will make your life easier.

First, add this package to your gradle dependencies as follows

implementation 'com.opencsv:opencsv:4.6'

Then you can either do

import com.opencsv.CSVReader;
import java.io.IOException;
import java.io.FileReader;


...

try {
    CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
    String[] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }
} catch (IOException e) {

}

or

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
List myEntries = reader.readAll();

Edit after comment

try {
    File csvfile = new File(Environment.getExternalStorageDirectory() + "/csvfile.csv");
    CSVReader reader = new CSVReader(new FileReader(csvfile.getAbsolutePath()));
    String[] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }
} catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(this, "The specified file was not found", Toast.LENGTH_SHORT).show();
}

If you want to package the .csv file with the application and have it install on the internal storage when the app installs, create an assets folder in your project src/main folder (e.g., c:\myapp\app\src\main\assets\), and put the .csv file in there, then reference it like this in your activity:

String csvfileString = this.getApplicationInfo().dataDir + File.separatorChar + "csvfile.csv"
File csvfile = new File(csvfileString);
2 of 7
11

The following snippet reads a CSV file from the raw resources folder (which will be packed into your .apk file upon compilation).

Android by default does not create the raw folder. Create a raw folder under res/raw in your project and copy your CSV File into it. Keep the name of the CSV file lower case and convert it into text format when asked. My CSV file name is welldata.csv.

In the snippet, WellData is the model class (with constructor, getter and setter) and wellDataList is the ArrayList to store the data.

private void readData() {
    InputStream is = getResources().openRawResource(R.raw.welldata);
    BufferedReader reader = new BufferedReader(
            new InputStreamReader(is, Charset.forName("UTF-8")));
    String line = "";

    try {
        while ((line = reader.readLine()) != null) {
           // Split the line into different tokens (using the comma as a separator).
            String[] tokens = line.split(",");

            // Read the data and store it in the WellData POJO.
            WellData wellData = new WellData();
            wellData.setOwner(tokens[0]);
            wellData.setApi(tokens[1]);
            wellData.setLongitude(tokens[2]);
            wellData.setLatitude(tokens[3]);
            wellData.setProperty(tokens[4]);
            wellData.setWellName(tokens[5]);
            wellDataList.add(wellData);

            Log.d("MainActivity" ,"Just Created " + wellData);
        }
    } catch (IOException e1) {
        Log.e("MainActivity", "Error" + line, e1);
        e1.printStackTrace();
    }
}
🌐
Reddit
reddit.com › r/androiddev › i need to read a csv file outside of the /src/ folder. how can i accomplish this? (java/android studio)
r/androiddev on Reddit: I need to read a CSV file outside of the /src/ folder. How can I accomplish this? (Java/Android Studio)
May 9, 2025 -

So, I'm doing a project for a class, and I need to open a CSV file for reading only. The rubric specifies as follows:

"Your application will read in data from text files placed in the assets directory. Create a new assets folder in your project (note: this new folder must not be in your src folder), and move all sample files (.csv files) into it ."

Right now, my java files in Android Studio is held in:

C:\Users\(me)\AndroidStudioProjects\(android studio project name)\app\src\main\java\com\example\(android studio project name)\...

And my non-src assets folder is in:

C:\Users\(me)\AndroidStudioProjects\(android studio project name)\app\assets

And within that folder are my csv files that I want to read.

Of course, these are gonna have to be relative file paths; I'm just listing the absolute paths so that it's clearer where each file is located.

I've searched plenty for how to get something like this to work, but no dice. Help would be appreciated!

Discussions

How can I read and show data from a csv file in Android? - Stack Overflow
I'm trying to understand how I can read from a csv file and show it on an activity in android studio. The file can contain for instance these information: name,employer,location,position type,core More on stackoverflow.com
🌐 stackoverflow.com
java - Trying to read a .csv file from downloads folder of internal storage with Android Studio - Stack Overflow
I am trying to read the contents of a .csv file which is in my downloads folder of internal storage of my phone. More on stackoverflow.com
🌐 stackoverflow.com
How to read csv file in android? - Stack Overflow
Possible Duplicate: Get and Parse CSV file in android I would like to store a csv file in android app itself & it should be called for read & later print the values according to the More on stackoverflow.com
🌐 stackoverflow.com
java - AndroidStudio - save user info in CSV file and read it - Stack Overflow
I'm a newbie in programming on Android Studio. I'm trying to create a simple application to gain basic experience. In the application, I would need to store individual inputs to a file (ideally CSV... More on stackoverflow.com
🌐 stackoverflow.com
January 22, 2019
Top answer
1 of 5
21

Where to put the CSV file in Android Create a folder named “raw” inside the “res” folder and put the CSV file in it.

How to read CSV file, Nothing special since its Android. All we are going to use our standard Java code. Its better to use our own code instead of going to an API. Following class is an utility to read CSV file and it can be used from within the Android application. In which array we will store items of csv file In these example it is scorelist arraylist .

public class CSVFile {
    InputStream inputStream;

    public CSVFile(InputStream inputStream){
        this.inputStream = inputStream;
    }

    public List read(){
        List resultList = new ArrayList();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        try {
            String csvLine;
            while ((csvLine = reader.readLine()) != null) {
                String[] row = csvLine.split(",");
                resultList.add(row);
            }
        }
        catch (IOException ex) {
            throw new RuntimeException("Error in reading CSV file: "+ex);
        }
        finally {
            try {
                inputStream.close();
            }
            catch (IOException e) {
                throw new RuntimeException("Error while closing input stream: "+e);
            }
        }
        return resultList;
    }
}

So how to load the CSV file from “raw” folder and use the above utility to read it?

InputStream inputStream = getResources().openRawResource(R.raw.stats);
CSVFile csvFile = new CSVFile(inputStream);
List scoreList = csvFile.read();

MainActivity.java

public class MainActivity extends Activity {
    private ListView listView;
    private ItemArrayAdapter itemArrayAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listView);
        itemArrayAdapter = new ItemArrayAdapter(getApplicationContext(), R.layout.item_layout);

        Parcelable state = listView.onSaveInstanceState();
        listView.setAdapter(itemArrayAdapter);
        listView.onRestoreInstanceState(state);

        InputStream inputStream = getResources().openRawResource(R.raw.stats);
        CSVFile csvFile = new CSVFile(inputStream);
        List scoreList = csvFile.read();

        for(String[] scoreData:scoreList ) {
            itemArrayAdapter.add(scoreData);
        }
    }
}

ItemArrayAdapter.java

public class ItemArrayAdapter extends ArrayAdapter {
    private List scoreList = new ArrayList();

    static class ItemViewHolder {
        TextView name;
        TextView score;
    }

    public ItemArrayAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    @Override
    public void add(String[] object) {
        scoreList.add(object);
        super.add(object);
    }

    @Override
    public int getCount() {
        return this.scoreList.size();
    }

    @Override
    public String[] getItem(int index) {
        return this.scoreList.get(index);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        ItemViewHolder viewHolder;
        if (row == null) {
            LayoutInflater inflater = (LayoutInflater) this.getContext().
                    getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.item_layout, parent, false);
            viewHolder = new ItemViewHolder();
            viewHolder.name = (TextView) row.findViewById(R.id.name);
            viewHolder.score = (TextView) row.findViewById(R.id.score);
            row.setTag(viewHolder);
        } else {
            viewHolder = (ItemViewHolder)row.getTag();
        }
        String[] stat = getItem(position);
        viewHolder.name.setText(stat[0]);
        viewHolder.score.setText(stat[1]);
        return row;
    }
}

activity_mail.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.javapapers.android.csvfileread.app.MainActivity">
    <ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/listView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp" />
</RelativeLayout>

item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/name"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="20dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/score"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="20dp" />
</RelativeLayout>

For the whole source code you can refers to these link javapapers.com/wp-content/uploads/2014/07/CSVFileRead.zip

I think it will help

2 of 5
5

A better CSV parser handles quoted fields

    import android.content.Context;
    import android.widget.Toast;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;

    public class CSVReader {
        private class StringDArray {
            private String[] data=new String[0];
            private int used=0;
            public void add(String str) {
                if (used >= data.length){
                    int new_size= used+1;
                    String[] new_data=new String[new_size];
                    java.lang.System.arraycopy( data,0,new_data,0,used);
                    data=new_data;
                }
                data[used++] = str;
            }
            public int length(){
                return  used;
            }
            public String[] get_araay(){
                return data;
            }
        }
        private  Context context;
        public CSVReader(Context context){
            this.context=context;
        }
        public List read(File file){
            List resultList = new ArrayList();
            try{
                InputStream inputStream= new FileInputStream(file);
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String csvLine;
                final char Separator = ',';
                final char Delimiter = '"';
                final char LF = '\n';
                final char CR = '\r';
                boolean quote_open = false;
                while ((csvLine = reader.readLine()) != null) {
                    //String[] row = csvLine.split(",");// simple way
                    StringDArray a=new StringDArray();
                    String token="";
                        csvLine+=Separator;
                    for(char c:csvLine.toCharArray()){
                        switch (c){
                            case LF: case CR:// not required as we are already read line
                                quote_open=false;
                                a.add(token);
                                token="";
                            break;
                            case Delimiter:
                                quote_open=!quote_open;
                            break;
                            case Separator:
                                if(quote_open==false){
                                    a.add(token);
                                    token="";
                                }else{
                                    token+=c;
                                }
                            break;
                            default:
                                token+=c;
                            break;
                        }
                    }
                    if(a.length()>0 ) {
                        if(resultList.size()>0){
                            String[] header_row =(String[]) resultList.get(0);
                            if(a.length()>=header_row.length) {
                                String[] row = a.get_araay();
                                resultList.add(row);
                            }
                        }else{
                            String[] row = a.get_araay();
                            resultList.add(row);//header row
                        }
                    }
                }
                inputStream.close();
            }catch (Exception e){
                Toast.makeText(context,"Error : " + e.getMessage(), Toast.LENGTH_LONG).show();
            }
            return resultList;
        }
    }

Usage

    File file=new File(path);
    CSVReader csvReader=new CSVReader(activity.this);
    List csv=csvReader.read(file);
    if(csv.size()>0){
        String[] header_row =(String[]) csv.get(0);
        if(header_row.length>1){
            String col1=header_row[0];
            String col2=header_row[1];
        }
    }

    Toast.makeText(activity.this,csv.size() + " rows", Toast.LENGTH_LONG).show();

Sample data used
ID,Name
1,Test Item 1
"2","Test Item 2"
"3","Test , Item 3"
4,Test Item 4

🌐
Aknay
aknay.github.io › 2018 › 09 › 28 › how-to-open-a-csv-file-from-android.html
How to open a CSV file from Android App
Once the string data is extracted from the CSV file, we use joinToString function to display on text view mTextViewCsvResult. You can assign any number to READ_REQUEST_CODE. Doesn’t has to be 123 in this example. But when you have multiple intents (eg. open image files, open PDF files) then you need to assign a unique number to each intent and act on it based on that number. We don’t have much to explain here. Just take note of the android...
🌐
Javapapers
javapapers.com › android › android-read-csv-file
Android Read CSV File - Javapapers
So how to load the CSV file from “raw” folder and use the above utility to read it? ... CSVFile is the above utility Java class (no external API used). InputStream inputStream = getResources().openRawResource(R.raw.stats); CSVFile csvFile = new CSVFile(inputStream); List ... Now lets look at this example Android application where we have used a CSV file to load data.
🌐
en.proft.me
en.proft.me › 2017 › 07 › 6 › how-read-csv-file-android
How to read from CSV file in Android | en.proft.me
public class MainActivity extends AppCompatActivity { RatingBar ratingBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); List<String[]> rows = new ArrayList<>(); CSVReader csvReader = new CSVReader(RatingActivity.this, "movies.csv"); try { rows = csvReader.readCSV(); } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < rows.size(); i++) { Log.d(Constants.TAG, String.format("row %s: %s, %s", i, rows.get(i)[0], rows.get(i)[1])); } } }
🌐
The App Guruz
theappguruz.com › blog › parse-csv-file-in-android-example-sample-code
How to Parse CSV file in Android with sample
Main objective of this tutorial is to explain how to parse the CSV file in Android. ... We are using Category.csv file in this example - you can follow the steps given below. ... String next[] = {}; List<string[]> list = new ArrayList<string[]>(); try { CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("test.csv")));//Specify asset file name //in open(); for(;;) { next = reader.readNext(); if(next != null) { list.add(next); } else { break; } } } catch (IOException e) { e.printStackTrace(); }
Find elsewhere
🌐
Example Code
example-code.com › android › csv_read.asp
Android™ Read CSV File
Chilkat • HOME • Android™ • AutoIt • C • C# • C++ • Chilkat2-Python • CkPython • Classic ASP • DataFlex • Delphi DLL • Go • Java • Node.js • Objective-C • PHP Extension • Perl • PowerBuilder • PowerShell • PureBasic • Ruby • SQL Server • Swift • Tcl • Unicode C • ...
🌐
CodePal
codepal.ai › code-generator › query › JrbI9YOj › java-code-read-csv-android-studio
Read and Parse CSV File in Android Studio using Java - CodePal
*/ public static List<String[]> readCSV(String fileName) throws IOException { List<String[]> lines = new ArrayList<>(); // Get the input stream for the CSV file from the assets folder InputStream inputStream = CSVReader.class.getClassLoader().getResourceAsStream(fileName); if (inputStream == null) { throw new IOException("CSV file not found in assets folder: " + fileName); } try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { String line; while ((line = reader.readLine()) != null) { // Split the line into 6 parts using comma as the delimiter String[] parts =
🌐
YouTube
youtube.com › watch
How to Parse CSV or Microsoft Excel file in Android Studio with example - YouTube
Find PPT & PDF at:https://viden.io/knowledge/web-technologieshttps://viden.io/knowledge/intro-to-mysql-and-q-a-of-mysqlhttps://viden.io/knowledge/php-intervi
Published   October 29, 2016
Top answer
1 of 2
3

You are indeed confused and mixing some things up. Let's go step by step.

STEP BY STEP, QUESTION BY QUESTION

  1. A class and an activity are not the same. You can read about it here and here. To put it in an easy way:

    • A class is a Java form.
    • For each screen in your app you will have a different activity. Each of them might have more than one class.
  2. Then, in Android, if you want to do any app (including the one which needs to read the .csv) you will need an activity, so that there is at least one screen in which the user can be. That is to say that the first thing you will need to do is to create an activity and add it to the manifest as the default activity (so that it appears together with the rest of apps). Do this (create activity), and then this (set it as default).

  3. Now you should be able to try the app in an emulator or a physical device and see an empty screen that does nothing.

  4. So far, so good. Now to the .csv reading problem. We will read the code as soon as the user enters the activity, when the activity is created (in the onCreate method). There should be a piece of code like the following one in your activity, otherwise, create it.

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
  1. Now we will proceed to read the csv inside the onCreate (you could also do it when the user presses a button, etc.). Note that one thing is reading it and the other one is creating visible UI lists with it. Here you can see how to read a csv file (either if you have it in the sd or if you pack it with the app).

EDIT. Let's deep deeper into this step (5). As stated in the answer I have referenced, you need to:

Add this package to your gradle dependencies as follows

implementation 'com.opencsv:opencsv:4.6'

And then modify the onCreate (or wherever you want to read the csv):

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

try {
// OPTION 1: if the file is in the sd
    File csvfile = new File(Environment.getExternalStorageDirectory() + "/csvfile.csv"); 
// END OF OPTION 1

// OPTION 2: pack the file with the app
/* "If you want to package the .csv file with the application and have it install on the internal storage when the app installs, create an assets folder in your project src/main folder (e.g., c:\myapp\app\src\main\assets\), and put the .csv file in there, then reference it like this in your activity:" (from the cited answer) */
String csvfileString = this.getApplicationInfo().dataDir + File.separatorChar + "csvfile.csv"
File csvfile = new File(csvfileString);
// END OF OPTION 2

    CSVReader reader = new CSVReader(new FileReader("csvfile.getAbsolutePath()"));
    String[] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }
} catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(this, "The specified file was not found", Toast.LENGTH_SHORT).show();
}
}

FINALLY

Right, so this would be it. If you also wanted to represent this data in a list, a grid, etc., well, this is another question! However, just in case, you just need to use again the activity you created, but add the ListView to your layout and feed the list also in onCreate (for example). See a tutorial here.

2 of 2
0

You can use TableUIBuilder to read your CSV file and render it as TableLayout as follows:-

((ViewGroup) findViewById(R.id.tableContainer)).addView(new TableUIBuilder(this, "student_records.csv").build());
🌐
YouTube
youtube.com › brian fraser
Read CSV Resource File: Android Programming - YouTube
Import a CSV file into an Android Application from the raw resource folder and store the contents in custom data objects for use in Java. Steps: 1. Have data...
Published   February 26, 2017
Views   64K
🌐
YouTube
youtube.com › random solutions 💡
How to browse and read CSV file from External Storage in Android studio. - YouTube
Output : https://youtube.com/shorts/xXIzyerLagkSource Code :https://drive.google.com/drive/folders/1xh80q7FeX0w_EG9b7m8PYXaaYywKjlXS?usp=sharingDon't Forget ...
Published   August 23, 2022
Views   2K
🌐
Stack Overflow
stackoverflow.com › questions › 54305842 › androidstudio-save-user-info-in-csv-file-and-read-it › 54306791
java - AndroidStudio - save user info in CSV file and read it - Stack Overflow
January 22, 2019 - Use this method as follows, parsing file "user.csv". public static String readFileAsString(File file) throws IOException { return readAsString(new FileInputStream(file)); }
🌐
YouTube
youtube.com › watch
Read CSV File From assets in Android Kotlin || In Just 3 Steps. - YouTube
#android #androidtutorialsHello Everyone I hope you all are doing good.Today we are doing to explore Pinterest Bottom Navigation UI in Android. Watch the Vid...
Published   April 28, 2021
🌐
YouTube
youtube.com › vision android hindi
Read CSV File in Android | #hind | #kotlin | #android | #csv | Vison Android | Android Tips - YouTube
Hey Guys, In this video we are going to learn how to read CSV files in android.GitHub: https://github.com/himanshuGaur684/Reading_CSV_FileInstagram: /vision_...
Published   September 6, 2022
Views   4K
🌐
Stack Overflow
stackoverflow.com › q › 8499351
Newest Questions - Stack Overflow
Stack Overflow | The World’s Largest Online Community for Developers
🌐
Stack Overflow
stackoverflow.com › questions › 79543677 › reading-a-csv-in-an-android-studio-java-application
Reading a CSV in an Android Studio Java Application - Stack Overflow
String csvfileString = getFilesDir() + "/ShelterInfo.csv"; System.out.println(csvfileString); File csvfile = new File(csvfileString); Spinner dropdown = findViewById(R.id.spinner1); ArrayAdapter<String> spinnerArrayAdapter; CSVReader reader; try ...