InputStream de la carpeta de activos de Android devuelve vacío

No estoy recibiendo ninguna excepción, pero cuando corro …

InputStream deckFile = context.getAssets().open("cards.txt"); 

Entonces, deckFile.read () devuelve -1. El archivo está en la carpeta correcta y no está vacío.

Esto debería ser lo más fácil del mundo …

EDIT: El AssetManager de hecho está listando "cards.txt" como estar allí, por lo que no debería ser el problema.

3 Solutions collect form web for “InputStream de la carpeta de activos de Android devuelve vacío”

Coloque el archivo de texto en el directorio /assets en el proyecto de Android. Utilice la clase AssetManager para acceder a ella.

 AssetManager am = context.getAssets(); InputStream is = am.open("test.txt"); 

O también puede poner el archivo en el directorio /res/raw , donde el archivo será indexado y accesible por un id en el archivo R:

 InputStream is = getResources().openRawResource(R.raw.test); 

EDITADO:

Pruebe el siguiente método para leer su archivo:

  public String convertStreamToString(InputStream p_is) throws IOException { /* * To convert the InputStream to String we use the * BufferedReader.readLine() method. We iterate until the BufferedReader * return null which means there's no more data to read. Each line will * appended to a StringBuilder and returned as String. */ if (p_is != null) { StringBuilder m_sb = new StringBuilder(); String m_line; try { BufferedReader m_reader = new BufferedReader( new InputStreamReader(p_is)); while ((m_line = m_reader.readLine()) != null) { m_sb.append(m_line).append("\n"); } } finally { p_is.close(); } Log.e("TAG", m_sb.toString()); return m_sb.toString(); } else { return ""; } } 

Estoy seguro de que le ayudará.

Intente debajo de la línea de código

 InputStream is = getAssets().open("test.txt"); int size = is.available(); byte[] buffer = new byte[size]; //declare the size of the byte array with size of the file is.read(buffer); //read file is.close(); //close file // Store text file data in the string variable String str_data = new String(buffer); 

El método disponible devuelve el tamaño total del activo …

El problema era que mi archivo era demasiado grande, y estaba siendo comprimido debido a su extensión ".txt". Al cambiar el nombre del archivo a un formato que normalmente se comprime, ".mp3", no hubo problema

  • FileChannel devuelve el tamaño incorrecto del archivo de la carpeta de activos
  • Dónde colocar un archivo XML que contiene datos en una aplicación de Android
  • Eclipse Android no limpia, no actualiza los recursos
  • ¿Cómo obtiene un objeto Drawable de un id de recurso en el paquete android?
  • Cómo encontrar View from string en vez de R.id
  • Lectura de un archivo XML desde recursos
  • Android: recurso extraíble con números. ¿Es posible?
  • Escapar comillas simples en el recurso xml para Android
  • El elemento ListView no permanecerá "seleccionado"
  • ¿Es JPG realmente sólo aceptable para su uso en Android?
  • Android, obtener ID de recurso de cadena?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.