【问题标题】:In org .commons.ziparchiveentry how to give the filename in foreign languages在 org .commons.ziparchiveentry 如何用外语给出文件名
【发布时间】:2011-10-21 12:04:47
【问题描述】:

在 ZipArchiveEntry 中如何定义文件名(压缩文件的名称是英文以外的外文名称)。当我定义

ZipArchiveEntry ze = new ZipArchiveEntry(filename);

它适用于 linux 机器但不适用于 windows。请帮忙。

更新

使用 ZipArchiveEntry 我试图压缩带有外语名称的单个文件。压缩后,我从该 zip 中提取文件。在 linux 中,它会正确返回文件名。但在 Windows 中,文件名已损坏

使用 jdk 时也报告了同样的问题。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244499

http://www.coderanch.com/t/454532/java/java/Corrupt-file-compression

【问题讨论】:

    标签: java zip ziparchive


    【解决方案1】:

    您可以使用 getEntries 方法隐式获取文件名

    Enumeration<?> en = zip.getEntries();
    ZipArchiveEntry zipEntry = null;
    while (en.hasMoreElements()) {
        zipEntry = (ZipArchiveEntry) en.nextElement();
    }
    

    然后您可以在 zipEntry 上调用 getName 来检查名称

    "i18n name string".equals(zipEntry.getName())
    

    希望对你有帮助。

    【讨论】:

    • 我正在尝试使用外国名称压缩文件。请告诉我如何为 zipArchiveentry 中的文件名提供编码
    • 我可能错过了重点。您想提取 zip 中的所有文件吗?您的问题是 windows 文件管理器中的演示文稿吗?
    • 我认为问题可能不是 ZipArchiveEntry 而是 windows 的区域设置。转到设置->区域和语言选项->高级并设置写入文件名的非 unicode 语言。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    相关资源
    最近更新 更多