我需要使用JCIFS从Linux机器创建一个zip文件到Windows Server。我尝试创建zip,但是获得了一个损坏的。我使用的代码粘贴在下面。
public boolean createZip(String fileName, String... files)
{
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain, userName, password);
SmbFile smbFile = new SmbFile(fileName, auth);
try (SmbFileOutputStream zipOutStream = new SmbFileOutputStream(smbFile);) {
String[] fileArray1 = files;
for (String file : fileArray1)
{
writeToZipFile(file, zipOutStream, authentication);
}
}
catch (Exception e)
{
LOGGER.error("From createZip", e);
}
return true;
}
private void writeToZipFile(String file, SmbFileOutputStream zipOutStream,
final NtlmPasswordAuthentication authentication) throws IOException
{
FileInputStream inputStream = new FileInputStream(file);
final byte[] buf = new byte[16 * 1024 * 1024];
int len;
while ((len = inputStream.read(buf)) > 0) {
zipOutStream.write(buf, 0, len);
}
}
注意:当我通过在临时文件夹(Linux机器)中创建zip文件以不同方式尝试时,尝试使用SmbFile的renameTo方法移动它。我收到了身份验证失败异常(“登录失败:未知用户名或密码错误。”)。