java si FileWriter FileReader le format non codé, OutputStreamWriter InputStreamReader Le format de codage peut être fourni

Lien original: https: //blog.csdn.net/qq_27093465/article/details/72730796

FileWriter FileReader en utilisant Java peut passer un chemin de fichier, vous pouvez simplement obtenir des fichiers de lecture et d' écriture.
Mais cela est trop simple à réaliser, il y aura des problèmes.

opérations de code simples comme ce blog mon code dans le fichier de vidage est d'utiliser ces deux classes pour atteindre.

java modifier le nom de fichier -renameTo (en utilisant l'exemple du procédé), ou copier un fichier appelé fichier de vidage

Le code de vidage ci-dessus Findbugs par l'analyse, l'invite suivante:

具体如下:
dépendance Trouvé sur le codage par défaut: new java.io.FileWriter (String)
Recours à codage par défaut
Trouvé un appel à un procédé qui va effectuer un octet à la conversion String (ou chaîne à octet), et suppose que la plate - forme par défaut codage est approprié. Cela entraînera le comportement de l' application de varier selon les plateformes. Utilisez une API alternative et spécifiez un nom charset ou objet Charset explicitement.

Alors, quelle est la traduction ci-dessous:

FileWriter FileReader est sans format de codage, utilisez l'encodage par défaut par défaut de la machine, ce sera en raison de problèmes de codage, et le bug.

Comment faire Le format de codage FileWriter FileReader ils l'apportent?

Ou prendre le fichier de vidage pour modifier le code. Spécifiques change comme suit.

private static boolean copyFile(String src, String des) {
    InputStreamReader fr = null;
    OutputStreamWriter fw = null;
    try {
        fr = new InputStreamReader(new FileInputStream(src),"UTF-8");//读
        fw = new OutputStreamWriter(new FileOutputStream(des), "UTF-8");//写
        char[] buf = new char[1024];//缓冲区
        int len;
        while ((len = fr.read(buf)) != -1) {
            fw.write(buf, 0, len);//读几个写几个
        }
        return true;
    } catch (IOException e) {
        LOG.error(e.getMessage());
        return false;
    } finally {
        if (fr != null) {
            try {
                fr.close();
            } catch (IOException e) {
                LOG.error(e.getMessage());
            }
        }
        if (fw != null) {
            try {
                fw.flush();
                fw.close();
            } catch (IOException e) {
                LOG.error(e.getMessage());
            }
        }
    }
}

L'objectif est de
FileWriter FileReader remplacé OutputStreamWriter InputStreamReader

nouvelle InputStreamReader (nouvelle FileInputStream (src), « UTF-8 »); //读
nouvelle OutputStreamWriter (nouvelle FileOutputStream (des), « UTF-8 »); //写

Ce format encodant pour afficher.

Publié 75 articles originaux · a gagné les éloges 7 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/zhengdong12345/article/details/102586254
conseillé
Classement