【问题标题】:Bufferedreader returning null缓冲读取器返回 null
【发布时间】:2013-11-04 02:45:18
【问题描述】:

我正在尝试从文本中读取网址,然后让应用程序打开该地址,我的缓冲阅读器似乎可以正确读取行但 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));

【问题讨论】:

  • 已经尝试过你的代码在我身边工作,你有没有把 xml 放在 raw 文件夹中。
  • 解决方案是他们在下面建议的任何方法。它不是一个 xml 文件,它是一个文本文件

标签: java android bufferedreader readline


【解决方案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();
    } 

【讨论】:

  • @user2310289 是的,你是对的。谢谢更新你的建议。
  • 它就是这样做的,它使 rsslink 链接两次,然后当它退出时,它将 rsslink 返回为 null
  • 非常感谢,现在我需要弄清楚如何使用分隔符处理文件中的多个链接。再次感谢
  • 我正在尝试添加一个分隔符,以便它可以拾取多个链接我尝试将read.useDelimiter(";") 添加到缓冲阅读器,但这不起作用。有什么指点吗??
【解决方案2】:

使用这个:

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();

【讨论】:

  • 感谢您的回答,它也有效。不幸的是,我只能选择一种解决方案..但非常感谢
  • 您好,感谢您之前的帮助。我试图让它读取多个网址,因为它正在处理 rss xml 链接。我尝试使用分隔符,但它似乎不起作用。你能帮忙吗
  • 请再问一个问题。
猜你喜欢
  • 2011-10-23
  • 1970-01-01
  • 2016-01-23
  • 2011-04-20
  • 2011-05-21
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 2016-07-06
相关资源
最近更新 更多