Code tronqué de compression Java
Utilisant généralement Java pour empaqueter des fichiers et générer des fichiers compressés, le problème du chinois tronqué le contenu apparaîtra, de nombreuses personnes sur Internet ont donné des solutions à ce problème. Il existe deux méthodes principales :
L'une consiste à modifier le code source de sun
L'autre consiste à utiliser le bibliothèque 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é directement.
Il ne fait aucun doute qu'il est plus pratique de choisir ce dernier. org.apache.tools.zip.ZipOutputStream utilise la méthode d'encodage du projet par défaut. En théorie, utf-8 prend également en charge le chinois. il est toujours tronqué, Cela peut être résolu en changeant la méthode setEncoding en gbk.
L'exemple de code est le suivant :
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(); } }
site Web chinois php, un grand nombre de tutoriels d'introduction à Java gratuits, bienvenue pour apprendre en ligne !
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!