我正在ColdFusion中构建一个TAR存档。有人很好地帮我弄清楚如何用JAVA做到这一点,但我提交TAR文件的系统说它收到错误,因为标题不是USTAR格式。我无法试图弄清楚如何更改标题格式。任何帮助表示赞赏。以下是我在Windows Server 2012上使用CF10的代码:
<!--- put the files into a TAR file --->
<cfscript>
// Initialize TAR file to generate
outputPath = "#thisbatchDir##thisBatchNumber#.tar";
os = createObject("java", "java.io.FileOutputStream").init(outputPath);
tar = createObject("java", "org.apache.commons.compress.archivers.tar.TarArchiveOutputStream").init(os);
dir = "#thisBatchNumber#/";
// tar.ustarFormat('true');
// Create an entry from a file (lst file)
inputFile = createObject("java", "java.io.File").init("#thisbatchDir##thisLstFilename#");
entry = tar.createArchiveEntry(inputFile, "#dir##thisLstFilename#");
tar.putArchiveEntry(entry);
tar.write(FileReadBinary(inputFile));
tar.closeArchiveEntry();
sleep(1000);
for (image in qryGetBatchImagesData) {
// Create an entry from a file (tif files)
inputFile = createObject("java", "java.io.File").init("#thisbatchDir##image.vImageFileName#");
entry = tar.createArchiveEntry(inputFile, "#dir##thisBatchNumber##numberFormat(image.iPageNum - 1,'000')#bf.tif");
tar.putArchiveEntry(entry);
tar.write(FileReadBinary(inputFile));
tar.closeArchiveEntry();
sleep(1000);
}
// create a second entry in a folder (trnsact file)
inputFile2 = createObject("java", "java.io.File").init("#thisbatchDir#transact.dat");
entry2 = tar.createArchiveEntry(inputFile2, "#dir#transact.dat");
tar.putArchiveEntry(entry2);
tar.write(FileReadBinary(inputFile2));
tar.closeArchiveEntry();
sleep(1000);
// create a second entry in a folder (eob file)
eobFileInput = createObject("java", "java.io.File").init("#thisbatchDir##thisBatchNumber#.eob");
entry2 = tar.createArchiveEntry(eobFileInput, "#thisBatchNumber#.eob");
tar.putArchiveEntry(entry2);
tar.write(FileReadBinary(eobFileInput));
tar.closeArchiveEntry();
// Close TAR file
tar.flush();
tar.close();
</cfscript>