阅读Android原始文本文件

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

res/raw文件夹读取到String

 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(); } 
 //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()); } } 

最简单的是使用扫描仪 。

 Scanner s = new Scanner(getResources().openRawResource(R.raw.text_file)); try { while (s.hasNext()) { String word = s.next(); // .... } } finally { s.close(); } 

默认分隔符是空格(包括空格)。 如果你想让它只在空间上触发,请使用s.useDelimiter(" "); 创建之后。

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

使用getResources().openRawResource(R.raw.song);从raw文件夹中读取数据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(" "); 

谢谢迪帕克

我有同样的问题,虽然上面的答案可能是正确的,但我无法让他们成功地工作。 这几乎可以肯定是我操作员的错误和无知 – 但是为了防止有人想知道我 – 一个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(); } 

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