我刚刚完成了有关管理应用程序资源的章节,并且遇到以下问题:
“将原始文本文件资源添加到Droid1项目。使用openRawResourse()方法创建一个InputStream对象并读取文件。使用Log.v()方法输出文件的内容。重新运行应用程序和查看结果。“
首先,我右键单击res文件夹,创建一个新的原始文件夹并将一个txt文件从我的桌面拖到这里(想想这没关系,找不到另一种导入文件的方法)。
然后我写了这两行:
InputStream iFile = getResources().openRawResource(R.raw.textfile);
Log.v(TAG, iFile);
然而我收到错误:
“Log类型中的方法v(String,String)不适用于参数(String,InputStream)”
不知道该怎么做......任何建议。感谢。
答案 0 :(得分:1)
由于错误表明v方法的第二个参数需要是String数据类型。因此,您需要将InputStream iFile转换为字符串。
我引用了http://www.kodejava.org/examples/266.html
您的活动中需要以下导入:
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.io.Writer;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
方法本身:
public String convertStreamToString(InputStream is) throws IOException {
/* To convert the InputStream to String we use the
* Reader.read(char[] buffer) method. We iterate until the
* Reader return -1 which means there's no more data to
* read. We use the StringWriter class to produce the string.*/
if (is != null) {
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
is.close();
}
return writer.toString();
} else {
return "";
}
}
将InputStream传递给方法以获取String和Log.v
InputStream iFile = getResources().openRawResource(R.raw.textfile);
String strInput = null;
try {
strInput = convertStreamToString(iFile);
} catch (IOException e) {
Log.v(TAG, "The string conversion failed.");
}
if(strInput != null){
Log.v(TAG, strInput);
}