web-dev-qa-db-fra.com

Lecture d'un fichier texte à l'aide d'InputStream

Comment puis-je lire un fichier texte comme dans Android app:

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

donc je peux être retourné une chaîne comme:

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

ce que je pensais est (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" ...
}
18
RE60K

essaye ça

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();
    }
}
29
Yogesh Tatwal

Utilisez BufferedReader pour lire le flux d'entrée. Comme BufferedReader lira le texte d'un flux d'entrée de caractères, mettant les caractères en mémoire tampon afin de permettre une lecture efficace des caractères, des tableaux et des lignes. InputStream représente un flux d'entrée d'octets. reader.readLine() lira le fichier ligne par ligne.

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
    } 

}
12
Vinay
                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);
1
Ziyad