[英]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>Abdul 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.