Как вывести содержимое необработанных файлов - PullRequest
0 голосов
/ 04 января 2011

Я просто прорабатываю главу об управлении ресурсами приложения и у меня возникли некоторые проблемы со следующим:

"Добавьте ресурс исходного текстового файла в проект Droid1. Используйте метод openRawResourse () для создания объекта InputStream и чтения файла. Выведите содержимое файла с помощью метода Log.v (). Перезапустите приложение и просмотреть результат. "

Итак, во-первых, я щелкнул правой кнопкой мыши по папке res, создал новую необработанную папку и перетащил туда текстовый файл со своего рабочего стола (думаю, что это нормально, и не смог найти другой способ импорта файла).

Тогда я написал эти две строки:

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

Однако я получаю сообщение об ошибке:

«Метод v (String, String) в типе Log не применим для аргументов (String, InputStream)»

Не уверен, что делать ... любые предложения. Благодаря.

1 Ответ

1 голос
/ 23 января 2011

Поскольку ошибка указывает, что второй параметр для метода 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);
}
...