2016-04-14 14 views
0

私はファイルを読み込み、その内容を文字列に格納しています。コードは私に次のような警告を与えます:リソースリーク:。どのように私はそれを解決するのですか?スキャナ警告:リソースリーク:<未割り当てのcloseble値>

public static String JsonFileToString(String FileName) 
{ 
    String FileContent=null; 
    try { 

     FileContent = new Scanner(new File("src/main/resources/" + FileName)).useDelimiter("\\Z").next(); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 


    return FileContent; 

} 
+0

Javaは、命名規則を持っています'(' fileContent'、 'fileName'など) – heijenoort

答えて

0

スキャナに変数を割り当てる必要があります。最後にブロックを閉じることができます。

String FileContent=null; 
     Scanner sc = null; 
     try { 

      sc = new Scanner(new File("src/main/resources/" + "")); 
      FileContent = sc.useDelimiter("\\Z").next(); 


     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } finally { 
      sc.close(); 
     } 
+1

' Scanner'のコンストラクタが失敗した場合(つまりファイルが見つからない場合)、 'null'オブジェクトに対してclose()を呼び出します。 – heijenoort

1

あなたは、ファイルを読むために作成Scannerを閉じていないので、ファイルは、その後開いたままになります。

は、Java 7+を使用していると仮定すると、スキャナがクリーンアップされていることを確認してみてください - と - リソースを使用:変数やメソッド名はキャメルケース `に書かれるべきである。

try (Scanner sc = new Scanner(new File("src/main/resources/" + FileName)).useDelimiter("\\Z")) { 
    return sc.next(); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
関連する問題