2016-04-29 9 views
1

最近FileNotFoundExceptionはどのように処理できますか?

私はA.txtファイルの内容を読み込もうとしています。

が、私のデバイスはA.TXT、私のデバイスは、私が進めて滞在することができますどのように、A.TXTていない場合ので、私はしたいFileNotFoundExceptionを

を発生していない?もし

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

! = indeviceVersion || serverVersion.equals(null)) 'compareVersion部分を追加します。しかし..ここで同じ –

+0

ああ、ヌル値に '.equals()'を使用しようとしているのでNullPointerExceptionが発生しました update: この 'else if(serverVersion == null ||!serverVersion.equals (indeviceVersion)) ' *' serverVersion == nullの後に 'serverVersion.equals()' *をどのように使用したかに注目してください。 'serverVersion == null'の場合、残りのif文は無視されるので、これはNULLポインタ例外を返しません。 –

+0

申し訳ありません私は 'else if(serverVersion == null ||!serverVersion.equals(indeviceVersi)){でも同じ例外があります。 ..申し訳ありません –

1

あなたはあなたのようなisFileFound = true を設定しようとする最終的に、そう

boolean isFileFound = false; 

のようにキャッチ/試す前に、変数を簡単な作成することができます(serverVersion場合、私は `他に試す

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つの質問があります。 if(isFileFound){内容は何ですか? –

+0

isFileFoundを追加する理由がわかりません。 –

+0

条件(if)をif(isFileFound!= null)またはif(!isFileFound)に変更しました。いくつかのメッセージを置くこともできますし、無視することもできます(ifは必要ありません)。ただし、条件を使用しない場合は変数isFileFoundは必要ありません。この変数はちょうど "こんにちは、私はエラーなしですべての試しコンテンツを実行しています"と言っています – Adley