有时会抛出FileNotFoundException,我不知道为什么

时间:2015-08-17 10:33:54

标签: java xml wifi filenotfoundexception 3g-network

我正在尝试运行一个返回XML格式的web服务,但它有时会在3G网络上抛出FileNotFoundException,有时在WIFI网络上成功运行

这是连接的代码:

      @Override
    protected ArrayList<NewsItemVO> doInBackground(Void... args) {


        try {
            URLConnection conn = new URL(feedUrl).openConnection();
            conn.setConnectTimeout(20000);
            conn.setReadTimeout(20000);
            InputStream in = new BufferedInputStream(conn.getInputStream());
          }
}

这是抛出异常的行

 InputStream in = new BufferedInputStream(conn.getInputStream());

2 个答案:

答案 0 :(得分:0)

在使用输入流之前,您可以检查它是否可用?

http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html

答案 1 :(得分:0)

根据文件:

  

表示尝试打开由指定路径名表示的文件失败。

     

当具有指定路径名的文件不存在时,FileInputStream,FileOutputStream和RandomAccessFile构造函数将抛出此异常。如果文件存在但由于某种原因无法访问,例如当尝试打开只读文件进行写入时,这些构造函数也会抛出它。

由于您的代码大部分时间都在工作而且有时没有工作,我怀疑您正在使用ConnectionTimeOut。

要进一步挖掘问题,请按以下步骤操作。

1)声明一个长变量t1并在try块之前将其初始化为System.currentTimeMillis()。声明一个更长的变量t2并在finally块之后获得当前时间。检查区别。如果差异超过连接超时设置,我们可以断定您正在连接超时。

2)在catch子句中打印完整的异常堆栈跟踪。

3)当您收到此异常时,请检查文件的权限,并确认可以使用读/执行权限访问该文件。

还有一件事 - 由于它在wifi上正常工作而不能在3G中工作,我怀疑连接超时是根本原因。