2013-06-17 4 views
2

Я хочу прочитать удаленный текстовый файл и показать его содержимое в текстовом виде. Я написал этот ниже код, но он не получает никакой информации из текстового файла. Как я могу найти причину этой проблемы или решить ее? В моем коде нет ничего плохого?Android читает текстовый файл из Интернета

private void readFile() 
    { 
     try { 
      String path ="http://host.com/info.txt"; 
      URL u = new URL(path); 
      HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
      c.setRequestMethod("GET"); 
      c.setDoOutput(true); 
      c.connect(); 
      InputStream in = c.getInputStream(); 
      Log.e("value",in.toString()); 
      AssetManager mngr=getAssets(); 
      ByteArrayOutputStream bo = new ByteArrayOutputStream(); 
      byte[] buffer = new byte[1024]; 
      in.read(buffer); // Read from Buffer. 
      bo.write(buffer); // Write Into Buffer. 
      TextView text = (TextView) findViewById(R.id.TextView1); 
      text.setText(bo.toString()); 
      bo.close(); 
      } 
     catch (NetworkOnMainThreadException e) { 
     } 
      catch (MalformedURLException e) { 
      e.printStackTrace(); 
      } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      } catch (IOException e) { 
      e.printStackTrace(); 
      } 
    } 
} 
+0

Log.e ("значение", in.toString()); что он печатает – Senthil

+0

, это невероятно ненужно, просто используйте WWW. одна строка кода – Fattie

ответ

4
  1. ли вы добавили разрешение Интернет в вашем файле манифеста?
  2. Вы запускаете свой код в отдельном потоке (пожалуйста, не поймайте NetworkOnMainThreadException)
  3. Проверьте, нет ли у вас каких-либо исключений в LogCat?
  4. Удалено c.setDoOutput(true); Это используется для отправки данных на сервер.

Вот как это должно быть:

new Thread() { 
      @Override 
      public void run() { 
       String path ="http://host.com/info.txt"; 
       URL u = null; 
       try { 
        u = new URL(path); 
        HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
        c.setRequestMethod("GET"); 
        c.connect(); 
        InputStream in = c.getInputStream(); 
        final ByteArrayOutputStream bo = new ByteArrayOutputStream(); 
        byte[] buffer = new byte[1024]; 
        in.read(buffer); // Read from Buffer. 
        bo.write(buffer); // Write Into Buffer. 

        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          TextView text = (TextView) findViewById(R.id.TextView1); 
          text.setText(bo.toString()); 
          try { 
           bo.close(); 
          } catch (IOException e) { 
           e.printStackTrace(); 
          } 
         } 
        }); 

       } catch (MalformedURLException e) { 
        e.printStackTrace(); 
       } catch (ProtocolException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

      } 
     }.start(); 
+0

спасибо, она разрешила проблему – user1642860

+0

@DmytroDanylyk Я пробовал это, и он работает хорошо, но текст отключается. (это означает, что я не получаю все символы из текстового файла). Я предположил, что это было из-за размера массива байтов, но изменение его ничего не делало. Я также изменил значения maxLength и строк для textView, но это не помогло. Есть идеи? – sboehnke

+0

@sboehnke просто используйте образец, который читается по строкам, здесь http://stackoverflow.com/a/2468340/1056263 –

Смежные вопросы