Czy ktoś mógłby mi pomóc skopiować plik z udostępnionego folderu na dysk lokalny? Mój kod to:Jak skopiować plik z udziału smb na dysk lokalny za pomocą jcifs w języku Java?
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;;
public class smb {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String urlToBackUpFile = "smb://ip/backup$/test.txt";
System.out.println("smb folder of source file" + urlToBackUpFile);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "login", "pass");
SmbFile dir = new SmbFile(urlToBackUpFile, auth);
System.out.println(dir.getDate());
SmbFile dest = new SmbFile ("C:/SQLRESTORESTAGE/v2.bak");
dir.copyTo(dest);
}
}
Plik pliku nie jest kopiowany. Otrzymałem komunikat "Nie można połączyć się z serwerem", ale program wyświetla dir.getDate() (oraz nazwę pliku i długość) pliku źródłowego. Więc myślę, że problem z folderem docelowym (C:/SQLRESTORESTAGE /). Mam również dowody tylko do odczytu pliku źródłowego. Czy możesz mi pomóc w korygowaniu kodu lub doradzaniu? Dziękuję Ci.
Wystarczy mała uwaga, lepiej zamknąć strumienie w bloku końcowym. – PomCompot
Aby dodać do komentarza @PomCompot, proponuję również użyć Apache Commons IO i użyć 'IOUtils.closeQuietly (Closeable c)', aby zamknąć swoje strumienie w bloku 'finally'. Cicho ignoruje wszelkie wyjątki wywoływane przez wywoływanie 'close()' w strumieniu, więc bądź świadomy tego zastrzeżenia, chociaż nie znalazłem go osobiście, aby być problemem. – Will
Powyższy kod działa dla mnie Dzięki. –