我想从放在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();
}
}
答案 0 :(得分:2)
您可能正在拾取不需要的或未格式化的CR / LF字符,这就是将文本拆分为新行的原因。如果你在Windows上,那么行尾会有CR和LF。在OS X和Linux上,只有一个LF。 (老麦克斯只有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();
}
答案 1 :(得分:0)
您是如何创建文本文件的?操作系统如何处理行尾字符有所不同。 Unix / Linux EOL字符与Windows EOL字符不同,这可以解释其中的区别。