Maison > Java > JavaBase > le corps du texte

Problème de fichier compressé Java tronqué

Libérer: 2019-12-21 16:38:56
original
2248 Les gens l'ont consulté

Problème de fichier compressé Java tronqué

Utilisez Java pour empaqueter des fichiers afin de générer des fichiers compressés. Il existe deux endroits où des caractères tronqués apparaîtront :

1. Le problème du contenu tronqué chinois : modifier le code source. de soleil. Utilisez les bibliothèques de classes open source org.apache.tools.zip.ZipOutputStream et org.apache.tools.zip.ZipEntry. Ces deux classes sont disponibles dans ant.jar et peuvent être téléchargées et utilisées.

2. Le problème des caractères chinois tronqués dans les commentaires des fichiers compressés : zos.setComment("Chinese test"); Trouvez le problème en utilisant la méthode de définition de l'encodage (zos.setEncoding("gbk");) et testez l'encodage du projet. Le mode est gbk et l'encodage par défaut est utf-8.

org.apache.tools.zip.ZipOutputStream utilise la méthode d'encodage du projet par défaut, ce qui peut être résolu en la changeant en gbk via la méthode setEncoding.

Code du fichier compressé Java :

package com.compress;  
  
import java.io.BufferedInputStream;  
import java.io.BufferedOutputStream;  
import java.io.DataInputStream;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
  
import org.apache.tools.zip.ZipEntry;  
import org.apache.tools.zip.ZipOutputStream;  
  
public class CompressEncodingTest {  
  
    /** 
     * @param args 
     * @throws Exception 
     */  
    public static void main(String[] args) throws Exception {  
        File f = new File("中文测试.txt");  
        ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(  
                new FileOutputStream("zipTest.zip"), 1024));  
        zos.putNextEntry(new ZipEntry("中国人.txt"));  
        DataInputStream dis = new DataInputStream(new BufferedInputStream(  
                new FileInputStream(f)));  
        zos.putNextEntry(new ZipEntry(f.getName()));  
        int c;  
        while ((c = dis.read()) != -1) {  
            zos.write(c);  
        }  
  
        zos.setEncoding("gbk");  
        zos.setComment("中文测试");  
  
        zos.closeEntry();  
        zos.close();  
    }  
  
}
Copier après la connexion

Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal