Я использую следующий код JCIFS для копирования файла с локального диска на общий диск
public boolean copyFiles(String srcFilePath, String destinationFileName) throws Exception {
boolean successful = false;
SmbFileOutputStream sfos = null;
try {
String user = USER_NAME + ":" + PASSWORD;
System.out.println("User: " + user);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("mydomain",USER_NAME,PASSWORD);
Config.setProperty("resolveOrder", "DNS");
String destinationFilePath = NETWORK_FOLDER +"/" +destinationFileName;
SmbFile sFile = new SmbFile(destinationFilePath, auth);
sfos = new SmbFileOutputStream(sFile);
// sfos.write(getBytesFromFile(new File(srcFilePath))); -- 1st approach
// Files.copy(new File(srcFilePath).toPath(),sfos); -- 2nd approach
FileInputStream fis = new FileInputStream(srcFilePath);
BufferedReader brl = new BufferedReader(new InputStreamReader(fis));
String b = null;
while ((b = brl.readLine()) != null) {
sfos.write(b.getBytes());
}
sfos.flush();
successful = true;
System.out.println("Successful" + successful);
} catch (Exception e) {
successful = false;
e.printStackTrace();
} finally {
if (sfos != null) {
sfos.close();
}
}
return successful;
}
Для копирования 10-мегабайтного файла требуется более 10 минут. Если я копирую один и тот же файл напрямую, он занимает около 1 минуты. Я попробовал 3 подхода к копированию файла (см. Прокомментированную часть кода), но ни одна из них не показала существенных различий.
В любом случае, я могу улучшить производительность JCIFS?
В качестве обходного пути я установил общий диск и скопировал файл на этот диск.