2016-04-29 75 views
1

最近如何处理FileNotFoundException?

我试着A.txt文件读取内容。

,但如果我的设备没有A.TXT,发生FileNotFoundException异常

,所以我想,如果我的设备没有a.txt中,我怎么能留下来继续?

String path = "/sdcard/Download"; 
    String textName = "a.txt"; 

    String serverVersion = null; 
    BufferedReader br = null; 
    try { 
     br = BufferedReaderFactory.create(path, textName); 

     StringBuilder contentGetter = new StringBuilder(); 
     while ((serverVersion = br.readLine()) != null) { 

      serverVersion = serverVersion.trim().toLowerCase(); 
      contentGetter.append('\n' + serverVersion); 
      Log.d(TAG, " myServerVersion = " + serverVersion); 
      break; 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

回答

0

看起来你已经在处理异常了。如果没有文件,你的代码将按计划继续。在你的try/catch块之后,你应该检查if(serverVersion == null),如果它返回true,你就知道serverVersion没有从文件中读取。

+0

我试着去'否则,如果(serverVersion! = indeviceVersion || serverVersion.equals(null))'add compareVersion part。但是..在这里相同 –

+0

啊,现在你有一个NullPointerException,因为你试图在空值上使用'.equals()' update: 试试这个'else if(serverVersion == null ||!serverVersion.equals (indeviceVersion))' 请注意我在*'serverVersion == null'之后如何使用'serverVersion.equals()'*。这不会返回空指针异常,因为如果'serverVersion == null',则忽略if语句的其余部分。 –

+0

对不起?我尝试'else if(serverVersion == null ||!serverVersion.equals(indeviceVersi)){但同样的例外。 ..对不起 –

1

您可以简单的创建一个像

boolean isFileFound = false; 

所以try/catch语句前一个变量,在最后的尝试设置isFileFound = true 像:

String path = "/sdcard/Download"; 
    String textName = "a.txt"; 

    boolean isFileFound = false; 

    String serverVersion = null; 
    BufferedReader br = null; 
    try { 
     br = BufferedReaderFactory.create(path, textName); 

     StringBuilder contentGetter = new StringBuilder(); 
     while ((serverVersion = br.readLine()) != null) { 

      serverVersion = serverVersion.trim().toLowerCase(); 
      contentGetter.append('\n' + serverVersion); 
      Log.d(TAG, " myServerVersion = " + serverVersion); 
      break; 
     } 
     isFileFound = true; 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    if (!isFileFound){ // This is equals to if(isFileFound != null) 
     //Do some message here, like: 
     Toast toast = Toast.makeText(context, "File not found", Toast.LENGTH_SHORT).show(); 
    } 
+0

谢谢。我有1个问题。如果(isFileFound){内容是什么? –

+0

我不明白为什么要添加isFileFound? –

+0

我已经将条件(if)更改为if(isFileFound!= null)或if(!isFileFound)。你可以放一些消息,任何东西......或者只是忽略(你不需要if),但如果你不使用任何条件,你不需要变量isFileFound。这个变量只是说“嘿,我执行所有的尝试内容没有错误” – Adley