我每天都会下载一个GZ文件,然后我需要解压缩并将内容导入我的数据库表。
我从Adobe Coldfusion Exchange发现了CFX_Gzip.dll。谁知道我把DLL文件放在哪里? 它可能会进入CF8 / lib /文件夹,但我不确定。
我正在使用Coldfusion8。如果我应该使用另一个gzip解压缩程序,我会很高兴有一个更新的。这个是旧的,写它的人的网站现在已经不见了。没有文档。
答案 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>