drno-reg
@drno-reg
см не кратко

Java JCIFS возможно ли скопировать (перенести) файлы с samba на windows?

Здравствуйте.

Пробую на java написать приложение, которое бы копировало (переносило) файлы с samba в папку windows.
Для этих целей нашел библиотеку samba JCIFS.

Пример копирования внутри samba есть.

smbFromFile = new SmbFile("smb://...pool/from-here/the-file.pdf", auth);
smbToFile = new SmbFile("smb://...pool/to-here/the-file.pdf", auth);
smbFromFile.copyTo(smbToFile);


Пример создания файла на samba
String user = "usersamba";
            String pass ="1234";
            String hostname = "192.168.10.1";
            String sharedFolder="data/new";
            String path="smb://"+hostname+"/"+sharedFolder+"/test.txt";
            NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass);
            SmbFile smbFile = new SmbFile(path,auth);
            SmbFileOutputStream smbfos = new SmbFileOutputStream(smbFile);
            smbfos.write("testing....and writing to a file".getBytes());
            System.out.println("completed ...nice !");


Проверил оба работают.

НО пока так и не удалось найти решение копирования файлов с samba в локальную папку windows при условии, что приложении будет запускаться с сервера windows.

Прошу помочь в решении проблемы.

Каким образом подружить
SmbFile smbFromFile = new SmbFile("smb://192.168.10.1/data", auth); 
File destinationFolder = new File("C:\\Temp\\New\\");

?
  • Вопрос задан
  • 964 просмотра
Решения вопроса 1
drno-reg
@drno-reg Автор вопроса
см не кратко
Вариант решения здесь

пример с samba на windows

InputStream in = null;
           OutputStream out = null;
           try{

               String SambaURL= "smb://usersamba:1234@192.168.1.110/data/1b.csv";
               File destinationFolder = new File("C:\\Temp\\IN\\");
               SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS_");
               File child = new File (destinationFolder+ "/" + fmt.format(new Date()) +"1b.csv");
               SmbFile dir = new SmbFile(SambaURL);
               SmbFile fileToGet=new SmbFile(SambaURL);
               fileToGet.connect();

               in = new BufferedInputStream(new SmbFileInputStream(fileToGet));
               out = new BufferedOutputStream(new FileOutputStream(child));

               byte[] buffer = new byte[4096];
               int len = 0; //Read length
               while ((len = in.read(buffer, 0, buffer.length)) != -1) {
                         out.write(buffer, 0, len);
               }
               out.flush(); //The refresh buffer output stream
           }
           catch (Exception e) {
               String msg = "The error occurred: " + e.getLocalizedMessage();
               System.out.println(msg);
           }
           finally {
               try {
                   if(out != null) {
                       out.close();
                   }
                   if(in != null) {
                       in.close();
                   }
               }
               catch (Exception e) {}
           }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы