Ken
Ken

Reputation: 31161

Android path to asset txt file

I'm doing:

FileReader fin = new FileReader("file:///android_asset/myFile.txt");

in an Android project and many variations. At runtime I get a file not found exception. The file is present and correct in the assets folder, so my path must be wrong.

What is the absolute path I need here?

Upvotes: 25

Views: 86090

Answers (6)

jayesh kavathiya
jayesh kavathiya

Reputation: 3541

    InputStream is = getResources().getAssets().open("terms.txt");
    String textfile = convertStreamToString(is);

public static String convertStreamToString(InputStream is)
            throws IOException {
            Writer writer = new StringWriter();

            char[] buffer = new char[2048];
            try {
                Reader reader = new BufferedReader(new InputStreamReader(is,
                        "UTF-8"));
                int n;
                while ((n = reader.read(buffer)) != -1) {
                    writer.write(buffer, 0, n);
                }
            } finally {
                is.close();
            }
            String text = writer.toString();
            return text;
    }

Upvotes: 19

panthro
panthro

Reputation: 24061

Its not reading it because all assets in assets folder are compressed, try changing its extension to .mp3 then read it in, that should stop it from being compressed.

Upvotes: 3

Delicious Software
Delicious Software

Reputation: 131

I found that if you are using an IDE like Eclipse you may need to do a clean -- or delete the API in the bin directory. It seems that the assets isn't getting updated when you do a build.

Upvotes: 2

user598417
user598417

Reputation: 31

AssetManager am = context.getAssets();
InputStream fs = am.open("myFile.txt");

Upvotes: 1

Kevin Coppock
Kevin Coppock

Reputation: 134664

AssetFileDescriptor descriptor = getAssets().openFd("myfile.txt");
FileReader reader = new FileReader(descriptor.getFileDescriptor());

Try using the above with FileDescriptors. Seems to be the most foolproof way I've found to gather asset paths.

Upvotes: 47

Nick Campion
Nick Campion

Reputation: 10479

Can you use something like

    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(context.getAssets().open("fileName.txt")));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Upvotes: 3

Related Questions