我在阅读原始文件的Android应用中有这样的方法:
public String inputStreamToString(InputStream isTwo) throws IOException {
StringBuffer sBuffer = new StringBuffer();
DataInputStream dataIO = new DataInputStream(isTwo);
String strLineTwo = null;
while ((strLineTwo = dataIO.readLine()) != null) {
sBuffer.append(strLineTwo + "\n");
}
dataIO.close();
isTwo.close();
return sBuffer.toString();
}
但是,DataInputStream对象现在似乎已弃用。我对它进行了研究,并且听说最好用readline()
包裹BufferedInputStream
。有人可以帮我完成他的(填写缺失线)吗?我不知道如何声明br
var。这就是我到目前为止所做的:
public String inputStreamToString(InputStream isTwo) throws IOException {
String strLineTwo = null;
BufferedReader br = null;
StringBuffer sBuffer = new StringBuffer();
InputStreamReader dataIO = new InputStreamReader(isTwo);
while ((strLineTwo = br.readLine()) != null) {
sBuffer.append(strLineTwo + "\n");
}
dataIO.close();
isTwo.close();
return sBuffer.toString();
以上是我尚未触及的代码,它调用了这个方法:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tech);
InputStream iFileTwo = getResources().openRawResource(R.raw.testing);
try {
TextView helpText = (TextView) findViewById(R.id.tvStream);
String strFileTwo = inputStreamToString(iFileTwo);
helpText.setText(strFileTwo);
} catch (Exception e) {
Log.e(DEBUG_TAG_THREE, "InputStreamToString failure", e);
}
}
另外,我想确保它适用于从Android 2.3到4.2(当前)。谢谢你的帮助。
答案 0 :(得分:4)
这就是我写它的方式。这样可以减少开销,并保留最初的换行符。
public String inputStreamToString(InputStream in) throws IOException {
StringBuilder out = new StringBuilder();
char[] chars = new char[1024];
Reader reader = new InputStreamReader(in /*, CHARSET_TO_USE */);
try {
for (int len; (len = reader.read(chars)) > 0; )
out.append(chars, 0, len);
} finally {
try {
in.close();
} catch (IOException ignored) {
}
}
return out.toString();
}
答案 1 :(得分:0)
只是一个建议,如果你正在迁移,那么为什么不使用像IOUtils
这样的库中的apache commons
来实际管理你的流,并为你节省很多错误的条件