utf-8 - Java utilise FileWriter pour écrire des données de type int dans un fichier, les données du fichier sont fausses ?
phpcn_u1582
phpcn_u1582 2017-05-17 09:58:09
0
1
620

(Je sais que mon titre est très vague car je ne sais vraiment pas comment le décrire)

La cause du problème est qu'une application Android a été développée en Java. L'une des fonctions consiste à utiliser FileWriter pour écrire des données int dans un fichier de données. Ce fichier de données est créé à l'aide de la méthode createNewFile(String filename) de File, et les données écrites dans le fichier sont toutes de type int. (Méthode write(int) de FileWriter)

Pour faciliter le traitement ultérieur, chaque segment de données du fichier de données est divisé par 4 (int)-1 (écrit devant chaque segment de données). Logiquement parlant, les 16 premiers octets de ce fichier devraient être ff. Mais le fichier de données réel ressemble à ceci :

Je vois des problèmes familiers, tels que des erreurs d'encodage UTF8, mais je ne comprends pas très bien pourquoi il y a des erreurs d'encodage si int est écrit en utilisant write et qu'il n'écrit pas de chaîne dans le fichier.

Je voudrais donc demander à tout le monde, que dois-je faire dans cette situation (fichier de données purement int) ? Existe-t-il un autre moyen de lire les données ?

Merci d'avance !

phpcn_u1582
phpcn_u1582

répondre à tous(1)
仅有的幸福

La méthode Write(int) de FileWrite ne peut pas écrire de fichiers int purs car l'int ici est en fait un caractère char. Lorsque vos données int ne trouvent pas la valeur char correspondante dans la table de code Unicode, des caractères tronqués apparaîtront. Vous pouvez fournir une méthode toString pour la convertir en chaîne
Si vous souhaitez écrire de vraies données int

       

     File file = new  File("b.txt");
FileWriter fw = new FileWriter(file);
fw.write((Integer.toString(87)));
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal