我有一个words.txt
文件,我已将其放在 res / raw 文件夹中。文件中的单词用空格分隔。我很难编写 Android / Java代码来逐字阅读文件。
答案 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();
}
我不确定为什么这对我有用,因为上面没有,因为它似乎没有根本不同 - 但正如我所说 - 这可能是我操作员的错误。