Index: lutinutil/src/java/org/codelutin/i18n/I18nFileReader.java diff -u lutinutil/src/java/org/codelutin/i18n/I18nFileReader.java:1.2 lutinutil/src/java/org/codelutin/i18n/I18nFileReader.java:1.3 --- lutinutil/src/java/org/codelutin/i18n/I18nFileReader.java:1.2 Sat Nov 17 10:33:28 2007 +++ lutinutil/src/java/org/codelutin/i18n/I18nFileReader.java Fri Dec 21 10:33:29 2007 @@ -23,9 +23,9 @@ * Created: Nov 22, 2004 * * @author Cédric Pineau - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Last update : $Date: 2007-11-17 10:33:28 $ + * Last update : $Date: 2007-12-21 10:33:29 $ * by : $Author: tchemit $ */ @@ -34,6 +34,8 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.BufferedReader; +import java.io.InputStreamReader; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; @@ -52,6 +54,33 @@ protected static final Pattern splitPattern = Pattern.compile("[^\\\\]="); private static final long serialVersionUID = 3611718334066783394L; + public void load2(InputStream inStream,String encodingTo) throws IOException { + Charset charsetTo = Charset.forName(encodingTo); + BufferedReader readerFile; + readerFile = new BufferedReader(new InputStreamReader(inStream,charsetTo)); + String lineFile; + StringBuilder builderFile; + builderFile = new StringBuilder(); + while ((lineFile=readerFile.readLine())!=null) { + builderFile.append(lineFile).append('\n'); + } + readerFile.close(); + super.load(new ByteArrayInputStream(builderFile.toString().getBytes())); + } + + /** + * + * @param inStream + * @param encoding + * @throws IOException + * @deprecated Ce code ne fonctionne pas lorsque les fichiers sont trop gros, + * de plus on n'obtient pas le même résultat si le fichier vient d'un jar + * ou du filesystem. Utiliser désormais la méthode {@link #load2(java.io.InputStream, String)} + * Attention, la nouvelle méthode prend comme second paramètres non pas + * l'encoding d'origine mais celui de destination. + * TODO Comprendre pourquoi cette différence. + * + */ public void load(InputStream inStream, String encoding) throws IOException { int available = inStream.available(); byte[] bytes = new byte[available];