How to access a file from asset/raw directory

后端 未结 5 1126
南笙
南笙 2020-11-30 12:34

with this below code i\'m trying to access the file which is stored in asset/raw folder, but getting null and

E/ERR: file:/android         


        
相关标签:
5条回答
  • 2020-11-30 12:39

    Assets and resources are files on your development machine. They are not files on the device.

    For assets, use open() on AssetManager to get an InputStream on your asset.

    Also, FWIW:

    • Uri.parse("file:///android_asset/raw/default_book.txt").toString() is pointless, as it gives you the same string that you started with

    • file:///android_asset/ only works for WebView

    0 讨论(0)
  • 2020-11-30 12:49

    In Kotlin we can achieve as-

    val string = requireContext().assets.open("default_book.txt").bufferedReader().use {
                    it.readText()
                }
    
    0 讨论(0)
  • 2020-11-30 12:52
    InputStream is = getAssets().open("default_book.txt");
    
    0 讨论(0)
  • 2020-11-30 12:53

    Place your text file in the /assets directory under the Android project and use AssetManager class as follows to access it.

    AssetManager am = context.getAssets();
    InputStream is = am.open("default_book.txt");
    

    Or you can also put the file in the /res/raw directory, from where the file can be accessed by an id as follows

    InputStream is = 
    context.getResources().openRawResource(R.raw.default_book);
    
    0 讨论(0)
  • 2020-11-30 13:00

    As the actual question wasn't sufficiently answered, here we go

    InputStream is = context.getAssets().openFd("raw/"+"filename.txt")
    

    context can be this or getActivity() or basically any other context

    Important is to include the folder before the filename separated by an /

    0 讨论(0)
提交回复
热议问题