La dépendance sur le codage par défaut, que dois-je utiliser et pourquoi?

FindBugs rapports d'un bug:

La dépendance sur l'encodage par défaut
Trouvé un appel à une méthode qui permettra de réaliser un octet String (ou une Chaîne d'octets) conversion, et supposons que la valeur par défaut de la plateforme d'encodage est adapté. Ce sera la cause de la demande, le comportement de varier entre les plates-formes. Utiliser un autre type d'API et de spécifier un jeu de caractères nom ou le jeu de caractères de l'objet explicitement.

J'ai utilisé FileReader comme ça (juste un morceau de code):

public ArrayList<String> getValuesFromFile(File file){
    String line;
    StringTokenizer token;
    ArrayList<String> list = null;
    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader(file));
        list = new ArrayList<String>();
        while ((line = br.readLine())!=null){
            token = new StringTokenizer(line);
            token.nextToken();
            list.add(token.nextToken());
    ...

Pour corriger le bug, j'ai besoin de changer

br = new BufferedReader(new FileReader(file));

à

br = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.defaultCharset()));

Et quand j'utilise PrintWriter la même erreur s'est produite. Alors maintenant, j'ai une question. Quand je peux (doit) utiliser FileReader et PrintWriter, si ce n'est pas une bonne pratique de s'appuyer sur l'encodage par défaut?
Et la deuxième question est de savoir utiliser correctement le jeu de caractères.defaultCharset ()? J'ai décidé d'utiliser cette méthode pour la définition de jeu de caractères de l'utilisateur du système d'exploitation.

InformationsquelleAutor Nikolas | 2014-03-01