Bufferedreader返回null

时间:2013-10-25 05:55:05

标签: java android bufferedreader readline

我正在尝试从文本中读取一个网址,然后让应用打开该地址,我的缓冲读取器似乎正在正确读取行,但readline不断返回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));

2 个答案:

答案 0 :(得分: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();
    } 

答案 1 :(得分: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();