RE60K
RE60K

Reputation: 621

Reading a textfile using InputStream

How can I read a text file like in android app:

"1.something written
2.in this file
3.is to be read by
4.the InputStream
..."

so I can be returned a string like:

"something written\nin this file\nis to be read by\nthe InputStream"

what I thought of is(Pseudocode):

make an inputstream
is = getAssest().open("textfile.txt");  //in try and catch
for loop{
string = is.read() and if it equals "." (i.e. from 1., 2., 3. etc) add "/n" ...
}

Upvotes: 27

Views: 99125

Answers (3)

Ziyad
Ziyad

Reputation: 21

File fe = new File("abc.txt");
FileInputStream fis = new FileInputStream(fe);
byte data[] = new byte[fis.available()];
fis.read(data);
fis.close();
String str = new String(data);
System.out.println(str);

Upvotes: 2

Yogesh Tatwal
Yogesh Tatwal

Reputation: 2751

try this

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
import java.io.*;

public class FileDemo1 extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
            playWithRawFiles();
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(), "Problems: " + e.getMessage(), 1).show();
        }
    }

    public void playWithRawFiles() throws IOException {      
        String str = "";
        StringBuffer buf = new StringBuffer();            
        InputStream is = this.getResources().openRawResource(R.drawable.my_base_data);
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            if (is != null) {                            
                while ((str = reader.readLine()) != null) {    
                    buf.append(str + "\n" );
                }                
            }
        } finally {
            try { is.close(); } catch (Throwable ignore) {}
        }
        Toast.makeText(getBaseContext(), buf.toString(), Toast.LENGTH_LONG).show();
    }
}

Upvotes: 37

Vinay
Vinay

Reputation: 6879

Use BufferedReader to read the input stream. As BufferedReader will read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines. InputStream represents an input stream of bytes. reader.readLine() will read the file line by line.

BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder out = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
    out.append(line);   // add everything to StringBuilder 
    // here you can have your logic of comparison.
    if(line.toString().equals(".")) {
        // do something
    } 

}

Upvotes: 14

Related Questions