2016-04-14 14 views
0

Ich lese eine Datei und speichere den Inhalt in einer Zeichenfolge. Der Code gibt mir eine Warnung als: Ressourcenleck:. Wie löse ich es?Scannerwarnung: Ressourcenleck: <nicht zugewiesener, naher Wert>

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 hat eine Namenskonvention: Variablen und Methodennamen sollten in 'camelcase geschrieben werden '(' fileContent', 'fileName', etc.) – heijenoort

Antwort

0

Sie müssen den Scanner einer Variablen zuweisen, damit Sie ihn im finally Block schließen können.

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

Wenn der Konstruktor von' Scanner' fehlschlägt (zB: Datei nicht gefunden), rufen Sie close() auf ein 'null' Objekt auf. – heijenoort

1

Sie schließen nicht die Scanner, dass Sie die Datei lesen erstellen, so dass die Datei bleibt danach offen.

Angenommen, Sie Java 7+ verwenden, verwenden Sie versuchen-mit-Ressourcen, um sicherzustellen, dass der Scanner bis gereinigt wird:

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