阅读Android原始文本文件

时间:2011-06-21 04:18:49

标签: android file-io

我有一个words.txt文件,我已将其放在 res / raw 文件夹中。文件中的单词用空格分隔。我很难编写 Android / Java代码来逐字阅读文件。

5 个答案:

答案 0 :(得分:7)

res/raw文件夹读取字符串

InputStream inputStream = getResources().openRawResource(R.raw.yourtextfile);
BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream));
String eachline = bufferedReader.readLine();
while (eachline != null) {
    // `the words in the file are separated by space`, so to get each words 
    String[] words = eachline.split(" ");
    eachline = bufferedReader.readLine();
}

答案 1 :(得分:6)

//put your text file to raw folder, raw folder must be in resource folder. 

private TextView tv;
private Button btn;

    btn = (Button)findViewById(R.id.btn_json);
    tv = (TextView)findViewById(R.id.tv_text);

    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            SimpleText();


        }
    });

private void SimpleText(){

    try {


        InputStream is = this.getResources().openRawResource(R.raw.simpletext);
        byte[] buffer = new byte[is.available()];
        while (is.read(buffer) != -1);
        String jsontext = new String(buffer);



        tv.setText(jsontext);

    } catch (Exception e) {

        Log.e(TAG, ""+e.toString());
    }

}

答案 2 :(得分:4)

最简单的方法是使用Scanner

Scanner s = new Scanner(getResources().openRawResource(R.raw.text_file));

try {
    while (s.hasNext()) {
        String word = s.next();
        // ....
    }
} finally {
    s.close();
}

默认分隔符是空格(包括空格)。如果您希望它仅在空间上触发,请在创建后使用s.useDelimiter(" ");

答案 3 :(得分:3)

要从原始文件夹中获取文件中的单词,请尝试使用以下方法

使用getResources().openRawResource(R.raw.song);来读取原始文件夹中的数据 然后在字节数组中获取输入流数据 用空格分割数据。

使用以下代码

InputStream is =getResources().openRawResource(R.raw.song);
            BufferedInputStream bis = new BufferedInputStream(is);

            ByteArrayBuffer baf = new ByteArrayBuffer(50);

            int current = 0;

            while ((current = bis.read()) != -1) {

                baf.append((byte) current);

            }

            byte[] myData = baf.toByteArray();
            String dataInString = new String(myData);
            String[] words = dataInString.split(" ");

由于 迪帕克

答案 4 :(得分:2)

我有同样的问题,而上述答案可能是正确的,我无法让他们成功地工作。 这几乎可以肯定是我操作员的错误和无知 - 但是为了防止有人想知道我 - 一个n00b - 终于做到了,这是我的解决方案:

// this is just the click handler for a button...
public void loadStatesHandler(View v) {
    try {  
        String states = getStringFromRaw(this);
        readOutput.setText(states);
    } 
    catch(Throwable t) {
        t.printStackTrace();
    }
}

private String getStringFromRaw(Context c) throws IOException {
        Resources r = c.getResources();
        InputStream is = r.openRawResource(R.raw.states);
        String statesText = convertStreamToString(is);
        is.close();
        return statesText;
}

private String convertStreamToString(InputStream is) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int i = is.read();
    while (i != -1) {
        baos.write(i);
        i = is.read();
    }
    return baos.toString();
}

我不确定为什么这对我有用,因为上面没有,因为它似乎没有根本不同 - 但正如我所说 - 这可能是我操作员的错误。