какой метод readStream ()? я просто не могу найти его нигде,

18

Я искал, как использовать ресурсы в каталоге «assets», затем я нахожу фрагмент:

AssetManager assets = getAssets();
((TextView)findViewById(R.id.txAssets)).setText(**readStream**(assets.open("data.txt")));

Я просто не могу найти, что такое метод readStream, это не в google-apis  Я попытался загрузить новейший документ Java api, но все равно не могу его найти, кто-нибудь знает это?

    
задан zenis 04.12.2011 в 15:44
источник
  • , но фрагмент follwing может сделать это правильно: AssetManager am = getAssets (); try {InputStream ins = am.open ("testtext.txt"); byte [] text = новый байт [ins.available () + 10]; ins.read (текст); String str = new String (текст, «GBK»); et01.setText (ул); } catch (Исключение e) {Log.i ("информация", " e.printStackTrace (); } –  zenis 04.12.2011 в 15:45
  • Можете ли вы разместить ссылку на то, где вы нашли этот фрагмент? Это, скорее всего, определяется пользователем, а не частью SDK. –  Felix 04.12.2011 в 15:48
  • , но страница на китайском языке, поэтому я не думаю, что вы могли ее прочитать. у него просто две линии и больше нет подсказок, поэтому я очень смущен: eoeandroid.com/forum.php?mod=viewthread&tid=71172 –  zenis 04.12.2011 в 15:56
  • Здесь также упоминается: developer.android.com/reference/java/net/HttpURLConnection.html –  Bjorn Tipling 06.12.2011 в 08:30

3 ответа

23

Как @Felix сказал, что это пользовательский метод. На странице, которую вы связали, они определили readStream следующим образом:

  private String readStream(InputStream is) {
    try {
      ByteArrayOutputStream bo = new ByteArrayOutputStream();
      int i = is.read();
      while(i != -1) {
        bo.write(i);
        i = is.read();
      }
      return bo.toString();
    } catch (IOException e) {
      return "";
    }
}
    
ответ дан Chris 04.12.2011 в 16:01
источник
  • большое спасибо, я слишком нетерпелив ..... и просто не заметил, что –  zenis 04.12.2011 в 16:10
  • Спасибо, Бьорн, имел тот же вопрос, что и ОП, и приземлился здесь! –  mastDrinkNimbuPani 01.02.2012 в 13:56
  • Я думаю, что он, должно быть, был удален из документов, но найти его здесь было очень полезно! –  mjjohnson 19.12.2012 в 05:12
14

Это лучшее решение:

private String readStream(InputStream is) throws IOException {
    StringBuilder sb = new StringBuilder();  
    BufferedReader r = new BufferedReader(new InputStreamReader(is),1000);  
    for (String line = r.readLine(); line != null; line =r.readLine()){  
        sb.append(line);  
    }  
    is.close();  
    return sb.toString();
}

Это намного быстрее, чем логика ByteArrayOutputStream .

    
ответ дан aviomaksim 18.06.2013 в 13:23
источник
3

Согласитесь с aviomaksim.

private static String readStream(InputStream is) {

        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            Log.e(TAG, "IOException", e);
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                Log.e(TAG, "IOException", e);
            }
        }
        return sb.toString();
    }
    
ответ дан macio.Jun 01.10.2013 в 16:40
источник
  • Строка sb.append (строка + "\ n"); будет намного быстрее, чем sb.append (строка) .append ("\ n"); –  blue 06.11.2014 в 11:23