2013-10-25 74 views
0

我试图读取文本网址,然后让应用程序打开该地址,我的缓冲读者似乎被正确读取行,但readline的不断回来空的BufferedReader返回null

String rsslink = null; 
    InputStream is = getResources().openRawResource(R.raw.xmlsource); 
    BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

    try { 
     while ((rsslink = br.readLine()) != null) 
     { 

     } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    String RSS_LINK = rsslink; 

    Log.d(Constants.TAG, "Service started"); 
    List<RssItem> rssItems = null; 
    try 
    { 
     XMLRssParser parser = new XMLRssParser(); 
     rssItems = parser.parse(getInputStream(RSS_LINK)); 
+0

已经试过你的代码工作我的身边,你有没有把XML放在原始文件夹。 – Gru

+0

解决方案是他们在下面建议的任何方法。它不是一个xml文件,它是一个文本文件 –

回答

1

你会得到最后一行null rsslink。 您需要将循环

try { 
     while ((rsslink = br.readLine()) != null) 
     { 

     } 
    } 

改变

try { 
     StringBuilder sb= new StringBuilder(); 
     while ((rsslink = br.readLine()) != null) 
     { 
       sb.append(rsslink); 
     } 
     rsslink = sb.toString(); 
    } 
+0

@ user2310289是的,你是正确的。谢谢你更新了你的建议。 – Prabhakaran

+0

它确实如此,它使rsslink链接两次,然后当它步出来它返回rsslink为空 –

+0

@DavidF是同意这一点。更新了我的代码。 – Prabhakaran

0

使用此:

String rsslink = ""; 
InputStream is = getResources().openRawResource(R.raw.xmlsource); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
String line = null; 

try { 
    while ((line = br.readLine()) != null) 
    { 
     rsslink +=line ; 
    } 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
String RSS_LINK = rsslink; 

Log.d(Constants.TAG, "Service started"); 
List<RssItem> rssItems = null; 
try 
{ 
    XMLRssParser parser = new XMLRssParser(); 
    rssItems = parser.parse(getInputStream(RSS_LINK)); 

更好的StringBufferStringBuilder

StringBuilder rsslink = new StringBuilder(); 
InputStream is = getResources().openRawResource(R.raw.xmlsource); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
String line = null; 

try { 
    while ((line = br.readLine()) != null) 
    { 
     rsslink.append(line); 
    } 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
String RSS_LINK = rsslink.toString(); 
+0

感谢您的回答,它也有效。不幸的是,我只能选择一种解决方案..但非常感谢 –

+0

嗨,感谢您的帮助。我试图让它读取多个网址,因为它处理rss xml链接。我尝试使用分隔符,但它似乎并没有工作。你能否请帮助 –

+0

请问另一个问题。 –