簡體   English   中英

無法從資產讀取整個文件

[英]Cannot read whole file from assets

我正在嘗試從資產文件夾中讀取一個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>

除了使用Log進行測試可能帶來的問題外,您還對available()的行為做出了無效的假設。 引用文檔

特別重要的是要認識到您一定不能使用此方法來調整容器的大小,並假定您可以讀取整個流而無需調整容器的大小。

最好的解決方案是將文件移出assets/並移至res/xml/ ,然后在Resources上使用getXml()讀取文件。與其他方法解析相比,解析速度快約10倍。

如果您確實確實需要將此資產包含在資產中,或者出於某些原因需要將其作為完整字符串,則需要進行循環,如將InputStream讀取/轉換為String所述

我將您的文件放在名稱為“ 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM