2013-11-30 3 views
0

Я пытаюсь прочитать файл plist из папки моих ресурсов, но файл читается только на строку 153 - не до конца. Может ли кто-нибудь помочь мне и рассказать мне, почему это происходит?Не удается прочитать весь файл из активов

Если я регистрирую это Log.v("ReadFromFile("filename.plist",this);, я получаю контент до 153-й строки. Что мне не хватает, почему я не получаю содержимое всего файла? Вот мой код:

public String ReadFromfile(String fileName, Context context) { 
     InputStream input; 
     String text = null; 
     try { 
      input = context.getAssets().open(fileName); 

      int size = input.available(); 
      byte[] buffer = new byte[size]; 
      input.read(buffer); 
      input.close(); 

      // byte buffer into a string 
      text = new String(buffer); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return text; 
    } 

А содержание файла, который я пытаюсь прочитать это:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>Number</key> 
     <integer>0</integer> 
     <key>RecitorLabel</key> 
     <string>abdul-rahman-al-sudais</string> 
     <key>Title</key> 
     <string>A­bdul Rahman Al ­Soudais عبد الرحمن السديس</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>Number</key> 
     <integer>1</integer> 
     <key>Title</key> 
     <string>Surat Al-Fātiĥah (The Opener) - سورة الفاتحة</string> 
    </dict> 
    </dict> 
</array> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>Number</key> 
     <integer>2</integer> 
     <key>Title</key> 
     <string>Surat Al-Baqarah (The Cow) - سورة البقرة</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>Number</key> 
     <integer>3</integer> 
     <key>Title</key> 
     <string>Surat 'Āli `Imrān (Family of Imran) - سورة آل عمران</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>4</integer> 
     <key>Title</key> 
     <string>Surat An-Nisā' (The Women) - سورة النساء</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>5</integer> 
     <key>Title</key> 
     <string>Surat Al-Mā'idah (The Table Spread) - سورة المائدة </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>6</integer> 
     <key>Title</key> 
     <string>Surat Al-'An`ām (The Cattle) - سورة الأنعام </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>7</integer> 
     <key>Title</key> 
     <string>Surat Al-'A`rāf (The Heights) - سورة الأعراف </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>8</integer> 
     <key>Title</key> 
     <string>Surat Al-'Anfāl (The Spoils of War) - سورة الأنفال</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>9</integer> 
     <key>Title</key> 
     <string>Surat At-Tawbah (The Repentance) - سورة التوبة </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>10</integer> 
     <key>Title</key> 
     <string>Surat Yūnus (Jonah) - سورة يونس </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>11</integer> 
     <key>Title</key> 
     <string>Surat Hūd (Hud) - سورة هود</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>12</integer> 
     <key>Title</key> 
     <string>Surat Yūsuf (Joseph) - سورة يوسف</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>13</integer> 
     <key>Title</key> 
     <string>Surat Ar-Ra`d (The Thunder) - سورة الرعد </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>14</integer> 
     <key>Title</key> 
     <string>Surat 'Ibrāhīm (Abrahim) - سورة ابراهيم</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>15</integer> 
     <key>Title</key> 
     <string>Surat Al-Hijr (The Rocky Tract) - سورة الحجر</string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>16</integer> 
     <key>Title</key> 
     <string>Surat An-Naĥl (The Bee) - سورة النحل </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>17</integer> 
     <key>Title</key> 
     <string>Surat Al-'Isrā' (The Night Journey) - سورة الإسراء </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>18</integer> 
     <key>Title</key> 
     <string>Surat Al-Kahf (The Cave) - سورة الكهف </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>19</integer> 
     <key>Title</key> 
     <string>Surat Maryam (Mary) - سورة مريم </string> 
    </dict> 
    <dict> 
     <key>Link</key> 
     <string>http://yaislam.com/quran/mp3/</string> 
     <key>New item</key> 
     <string></string> 
     <key>Number</key> 
     <integer>20</integer> 
     <key>Title</key> 
     <string>Surat Ţāhā (Ta-Ha) - سورة طه </string> 
    </dict> 
    </array> 
</plist> 
+1

Как вы подтверждающую, что это только для чтения к определенной линии ? Имейте в виду, что существует ограничение на длину сообщений, отображаемых в LogCat. http://stackoverflow.com/questions/15030856/is-there-a-limit-to-how-much-of-a-string-logcat-will-print –

ответ

0

В дополнение к возможным проблемам с использованием Log для тестирования, вы делаете недопустимое предположение о поведении available(). Цитирование the documentation:

Это особенно важно понимать, что вы должны не использовать этот метод для размера контейнера и предположим, что вы можете полностью прочитать потока без необходимости изменения размера контейнера.

Лучшее решение переместить файл из assets/ и в res/xml/, а затем использовать getXml() на Resources, чтобы прочитать его. Это будет анализировать ~ 10 раз быстрее, чем разбор его другими способами.

Если вам абсолютно необходимо иметь это в активах или по какой-то причине вам нужно как полную строку, вам необходимо выполнить цикл, как описано в Read/convert an InputStream to a String.

0

я положил файл в активах под названием «text.xml» и я могу прочитать полное содержание в строке: -

String jsonString = null ; 
    try{ 
    InputStream is = getAssets().open("test.xml"); 

    int size = is.available(); 

    byte[] buffer = new byte[size]; 

    is.read(buffer); 

    is.close(); 

    jsonString = new String(buffer, "UTF-8"); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
    System.out.println(jsonString); 
+0

Да, кажется, что Log cat не отображает полный вывод. И пример содержимого файла - это всего лишь небольшой фрагмент всего файла. Я установил вывод строки в текстовое представление, и все это показано. Благодаря! –

+0

Я дал свой ответ на основании вашего вопроса. Если файл большой, вам нужно поставить весь файл. В моем Logcat отображается полная строка. –

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