我想从放在 res/raw/text 中的文本文件中读取 我成功阅读了,但在输出的每一行之后都有一个奇怪的字符,例如“[]”。 这个字符位于输出中每一行的末尾,我的源文件(文本)中有新行。 不知道如何从每一行中删除这个字符..
public class HelpActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.help);
TextView textview = (TextView)findViewById(R.id.TextView_HelpText);
textview.setText(readTxt());
}
private String readTxt() {
InputStream is = getResources().openRawResource(R.raw.text);
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
int i;
try
{
i = is.read();
while (i != -1)
{
byteArray.write(i);
i = is.read();
}
is.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return byteArray.toString();
最佳答案
您可能会选择不需要的或未格式化的 CR/LF 字符,这就是将文本拆分为新行的原因。如果您使用的是 Windows,则该行的末尾将同时出现 CR 和 LF。在 OS X 和 Linux 上,只有一个 LF。 (旧 Mac 只有一个 CR。)
因此,如果您在 Windows 中保存文本文件,并在 Android (Linux) 上显示它,那么未格式化的文本可能会显示额外的 CR 字符,每行末尾一个。
要修复它,试试这样的方法
private String readTxt() {
InputStream is = getResources().openRawResource(R.raw.text);
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line);
}
return total.toString();
}
关于Android 文本文件(在原始目录中)未被正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421978/