如何输出原始文件的内容

时间:2011-01-04 17:23:59

标签: logging resources inputstream

我刚刚完成了有关管理应用程序资源的章节,并且遇到以下问题:

  

“将原始文本文件资源添加到Droid1项目。使用openRawResourse()方法创建一个InputStream对象并读取文件。使用Log.v()方法输出文件的内容。重新运行应用程序和查看结果。“

首先,我右键单击res文件夹,创建一个新的原始文件夹并将一个txt文件从我的桌面拖到这里(想想这没关系,找不到另一种导入文件的方法)。

然后我写了这两行:

InputStream iFile = getResources().openRawResource(R.raw.textfile);
Log.v(TAG, iFile);

然而我收到错误:

  

“Log类型中的方法v(String,String)不适用于参数(String,InputStream)”

不知道该怎么做......任何建议。感谢。

1 个答案:

答案 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);
}