Pour donner un exemple d'une telle fonction d'assistance:
String[] lines = NioUtils.readInFile(componentxml);
La clé est d'essayer de fermer le BufferedReader même si une IOException est levée.
/**
* Read lines in a file. <br />
* File must exist
* @param f file to be read
* @return array of lines, empty if file empty
* @throws IOException if prb during access or closing of the file
*/
public static String[] readInFile(final File f) throws IOException
{
final ArrayList lines = new ArrayList();
IOException anioe = null;
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader(f));
String line;
line = br.readLine();
while(line != null)
{
lines.add(line);
line = br.readLine();
}
br.close();
br = null;
}
catch (final IOException e)
{
anioe = e;
}
finally
{
if(br != null)
{
try {
br.close();
} catch (final IOException e) {
anioe = e;
}
}
if(anioe != null)
{
throw anioe;
}
}
final String[] myStrings = new String[lines.size()];
//myStrings = lines.toArray(myStrings);
System.arraycopy(lines.toArray(), 0, myStrings, 0, lines.size());
return myStrings;
}
(si vous voulez juste une chaîne, changer la fonction d'ajouter chaque ligne à un StringBuffer (ou StringBuilder dans java5 ou 6)
Il vous manque une citation de fermeture là ... – itsadok
Je ne pense pas que ce soit un Java étant "pointilleux" sur le texte que vous lisez avec readUTF(), c'est juste que vous l'utilisez mal. Lisez ceci: http://java.sun.com/javase/6/docs/api/java/io/DataInput.html#modified-utf-8 –