Reading a txt file and outputing as a TextView in Android

后端 未结 4 1643
心在旅途
心在旅途 2021-01-07 09:46

I am trying to read a text file that is already saved in my directory and print it on the screen as a TextView. This is the code that I have so far. However, when I run the

相关标签:
4条回答
  • 2021-01-07 09:58

    If you want to keep a .txt file in your Project, you must locate it in the assets folder.
    Then you can access it with AssetManger .
    Read this topic on how to create your assets folder, and then use this code:

    public class subActivity extends Activity {
    
    private TextView textView;
    private StringBuilder text = new StringBuilder();
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.text);
        BufferedReader reader = null;
    
        try {
            reader = new BufferedReader(
                new InputStreamReader(getAssets().open("inputNews.txt")));
    
            // do reading, usually loop until end of file reading  
            String mLine;
            while ((mLine = reader.readLine()) != null) {
                text.append(mLine);
                text.append('\n');
            }
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(),"Error reading file!",Toast.LENGTH_LONG).show();
            e.printStackTrace();
        } finally {
            if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                //log the exception
            }
        }
    
        TextView output= (TextView) findViewById(R.id.summtext);
        output.setText((CharSequence) text);
    
     }
    }
    
    0 讨论(0)
  • 2021-01-07 10:06

    As far as I know you cannot read file from so called development folder. But you can move the same file to assets folder in development folder and read from there. ie.

    try {
    BufferedReader reader = new BufferedReader(
        new InputStreamReader(getAssets().open("inputNews.txt")));
    
    StringBuilder text = new StringBuilder();
    String line;
    while ((line = reader.readLine()) != null) {
             text.append(line);
             text.append('\n');
    }   
    } catch (IOException e) {
        Toast.makeText(getApplicationContext(),"Error reading file!",Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }
    

    I hope it helps

    0 讨论(0)
  • 2021-01-07 10:08

    This is the Kotlin version of the answer from above:

    var text = ""
    var reader: BufferedReader? = null
    
    try {
        reader = BufferedReader(InputStreamReader(assets.open("inputNews.txt")))
        text = reader.readLines().joinToString("\n")
    } catch (e: IOException) {
        Toast.makeText(applicationContext, "Error reading license file!", Toast.LENGTH_SHORT).show()
        e.printStackTrace()
    } finally {
        try {
            reader?.close()
        } catch (e: IOException) {
            //log the exception
            e.printStackTrace()
        }
        textView.text = text
    }
    
    0 讨论(0)
  • 2021-01-07 10:18

    You should store those files in assets or raw directory.

    And after that you can get inputstream from those files by using ,

    If using assets

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

    OR if you use raw directory then ,

    InputStream is = getResources().openRawResource(R.raw.test);
    
    0 讨论(0)
提交回复
热议问题