Coldfusion8 - 使用Coldfusion 8解压缩GZ文件

时间:2011-03-31 17:43:16

标签: coldfusion gzip gz

我每天都会下载一个GZ文件,然后我需要解压缩并将内容导入我的数据库表。

我从Adobe Coldfusion Exchange发现了CFX_Gzip.dll。谁知道我把DLL文件放在哪里? 它可能会进入CF8 / lib /文件夹,但我不确定。

我正在使用Coldfusion8。如果我应该使用另一个gzip解压缩程序,我会很高兴有一个更新的。这个是旧的,写它的人的网站现在已经不见了。没有文档。

3 个答案:

答案 0 :(得分:6)

不需要使用CF8的dll,使用现有的java库。请查看CFLib或尝试以下代码:

<cfscript>
try{
    /* Set inoutput */
    gzFileName = "myFile.gz";
    outputFile = "mygzFiles";

    /* Initialize gzip */
    var outStream = CreateObject("java","java.io.FileOutputStream");
    var inStream = CreateObject("java","java.io.FileInputStream");
    var inGzipStream = CreateObject("java","java.util.zip.GZIPInputStream");

    outStream.init(outputFile);
    inStream.init(arguments.gzipFilePath);

    inGzipStream.init(instance.ioInput);

    while(l GTE 0){
        outStream.write(buffer, 0, l);
        l = inGzipStream.read(buffer);
    }

    /* Close the GZip file */
    inGzipStream.close();
    inStream.close();
    outStream.ioOutput.close();

} catch(Any){}
</cfscript>

答案 1 :(得分:1)

您可以使用一些java来处理gzip文件 http://www.cflib.org/udf/gzip

答案 2 :(得分:1)

可能不是最优雅的解决方案,但似乎适用于我的简单测试用例:

<cfscript>

    inputFile = "/tmp/test.txt.gz";
    outputFile = "/tmp/test.txt";

    ioInput = CreateObject("java","java.io.FileInputStream");
    gzInput = CreateObject("java","java.util.zip.GZIPInputStream");
    ioOutput = CreateObject("java","java.io.FileOutputStream");

    ioInput.init(inputFile);
    gzInput.init(ioInput);
    ioOutput.init(outputFile);

    line = 0;
    buffer = RepeatString(" ", 1024).getBytes();

    while (line GTE 0) {
        ioOutput.write(buffer, 0, line);
        line = gzInput.read(buffer);
    }

    gzInput.close();
    ioInput.close();
    ioOutput.close();

</cfscript>